我是使用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" />
答案 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中的值更改属性名称。)