3

我是使用 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" />
4

1 回答 1

7

属性值模板是您的朋友。您尝试实现的正确语法是

<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 中的值改变属性名称)。

于 2013-09-06T16:33:42.997 回答