想象一下我的 XML 文件如下所示:
<root>
<test>
Lorem ipsum dolor sit amet, <randomTag>consectetur</randomTag>
adipiscing elit, sed do <randomTag>eiusmod</randomTag> tempor
incididunt ut labore et dolore magna aliqua...
</test>
</root>
以下代码不起作用:
<xsl:template match="/">
<xsl:apply-templates select="substring(test,1,50)"/> ...
</xsl:template>
<xsl:template match="randomTag">
<myTag><xsl:value-of select="."/></myTag>
</xsl:template>
我期望以下输出:
Lorem ipsum dolor sit amet, <myTag>consectetur</myTag>
adipiscing...
如果我用 test 替换 substring(test,1,50) ,它可以工作,但我只想要前 50 个字符。
我也尝试过以这种方式使用变量:
<xsl:template match="/">
<xsl:variable name="aux" select="substring(test,1,50)"/>
<xsl:apply-templates select="$aux"/> ...
</xsl:template>
但即使这样也有效。
在我看来,问题出在 substring() 表达式上。 有什么建议吗?
最佳答案
<xsl:apply-templates>
仅适用于 node-set
,即原始文档中的一组节点。
在许多 XSLT 处理器中,您可以创建额外的 node-set
与 exsl:node-set扩展功能。
关于xml - 将模板应用于 XSLT 中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575016/