使用<sql:query>时如何使用<xsl:attribute>制作元素

亨德·萨米尔(Hend Samir)

我正在使用saxonee-sql连接到数据库。我如何使输出xml文件像这样:

<Partners>
   <Partner type="Supplier">
          <PartnerName>name 1</PartnerName>
          <PartnerDuns>duns 1</PartnerDuns>
   </Partner>
   <Partner type="Buyer">
          <PartnerName>name 2</PartnerName>
          <PartnerDuns>dums 2</PartnerDuns>
   </Partner>
</Partners>

这是xslt:

 <xsl:variable name="partner"> 
     <sql:query connection="$connection" table="Partner" column="PartnerDuns,PartnerName,type" row-tag="Partner" /> 
</xsl:variable>
 <Partners>
    <xsl:copy-of select="$partner" />
</Partners>

当前输出是

<Partners>
   <Partner>
          <PartnerName>name 1</PartnerName>
          <PartnerDuns>duns 1</PartnerDuns>
          <type>Supplier</type>
   </Partner>
   <Partner>
          <PartnerName>name 2</PartnerName>
          <PartnerDuns>dums 2</PartnerDuns>
          <type>Buyer</type>
   </Partner>
</Partners>
马丁·霍恩(Martin Honnen)

我想你可以用例如简单地转换原始结果

<xsl:template match="Partner/*">
  <xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="Partner/type">
  <xsl:attribute name="{name()}" select="."/>
</xsl:template>

<xsl:template match="Partner">
  <xsl:copy>
    <xsl:apply-templates select="type, (* except type)"/>
  </xsl:copy>
</xsl:template>

然后使用

 <xsl:variable name="partner"> 
     <sql:query connection="$connection" table="Partner" column="PartnerDuns,PartnerName,type" row-tag="Partner" /> 
</xsl:variable>
 <Partners>
    <xsl:apply-templates select="$partner/*" />
</Partners>

而不是copy-of

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章