使用XSL生成xml属性值

时间:2013-09-06 16:14:21

标签: xml xslt

我是使用XSL的新手。我试图将输入数据的数据转换为数据捕获模板并生成xml文件。我正在捕获应该属性值的数据。我知道我的路径是正确的但我在生成过程中遇到错误。救命啊!

<!-- <xsl:value-of select='odnodes/node/comments'/> -->
<node name="<xsl:value-of select='odnodes/node/name'/>" 
      host="<xsl:value-of select='odnodes/node/host'/>" 
      port="<xsl:value-of select='odnodes/node/port'/>" 
/>

最终结果如下所示:

<!-- uat server - added 2/7/2013 -->
<node name="webserver_uat" host="192.168.1.1" port="20014" />

1 个答案:

答案 0 :(得分:5)

属性值模板在这里是你的朋友。您要尝试实现的正确语法是

<node name="{odnodes/node/name}" 
      host="{odnodes/node/host}" 
      port="{odnodes/node/port}" />

这里的花括号表示它是一个要计算的表达式,而不是输出字面意思。

注意,您也可以使用 xsl:attribute 来创建属性:

<node>
   <xsl:attribute name="name"><xsl:value-of select="odnodes/node/name" /></xsl:attribute>
   <xsl:attribute name="host"><xsl:value-of select="odnodes/node/name" /></xsl:attribute>
   <xsl:attribute name="port"><xsl:value-of select="odnodes/node/name" /></xsl:attribute>
</node>

但是你可以看到这更加冗长,如果你想要'条件'属性,你只需要这样做。 (例如,您将其中一个属性包装在 xsl:if 中,或根据输入XML中的值更改属性名称。)