【问题标题】:XSLT and for-eachXSLT 和 for-each
【发布时间】:2017-10-19 07:29:35
【问题描述】:

我有如下的 XML 消息:

<message>
<line number="1"><li>1</li><li>2</li><li>3</li></line>
<line number="2"><li>x</li><li>y</li><li>z</li>
</line>
<line number="3"><li>a</li><li>b</li><li>c</li>
</line>
</message>

我想知道为什么以下 XSLT 不返回 &lt;li&gt; 元素,而只返回 &lt;li&gt;&lt;/li&gt; 内部的内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
  <xsl:for-each select="/message/line">

line <xsl:value-of select="position()"/>: <xsl:value-of select="."/>

  </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

例如:line 1: 123 而不是 line 1: &lt;li&gt;1&lt;/li&gt;&lt;li&gt;2&lt;/li&gt;&lt;li&gt;3&lt;/li&gt;

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    这就是xsl:value-of 所做的:它返回一个节点的字符串值。如果您希望它保留为一棵树,请使用xsl:copy-of

    顺便说一句,XSLT 领域没有任何标签。它只看到节点。在 XSLT 开始行动之前,XML 解析器将标记转换为节点。

    【讨论】:

    • 非常感谢 - 这就是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    相关资源
    最近更新 更多