【问题标题】:Generating xml attribute value with XSL使用 XSL 生成 xml 属性值
【发布时间】:2013-09-06 16:14:20
【问题描述】:

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

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速回复!我使用了 xls:attribute 解决方案并使用了相对路径进行选择,这就是诀窍。谢谢。
    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多