这是我遇到的一个问题。为了防止 h1 被复制,在 xml 中每个 h1 标签都会在 h1 之后有一个随机数。源 xml 和想要的 html 如下所示:
源代码:
<h1_JW1XRT>Hello1</h1_JW1XRT>
<h1_JXZRIE>Hello2</h1_JXZRIE>
转换成html
<h1 id="h1_JW1XRT">Hello1</h1>
<h1 id="h1_JXZRIE">Hello2</h1>
我怎样才能写这个模板?
这种转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*[starts-with(name(), 'h1')]">
<h1 id="{name()}"><xsl:apply-templates/></h1>
</xsl:template>
</xsl:stylesheet>
当应用于以下 XML 文档(提供的 XML 片段,包装在单个顶部元素中——成为格式良好的 XML 文档)时:
<t>
<h1_JW1XRT>Hello1</h1_JW1XRT>
<h1_JXZRIE>Hello2</h1_JXZRIE>
</t>
产生想要的正确结果:
<h1 id="h1_JW1XRT">Hello1</h1>
<h1 id="h1_JXZRIE">Hello2</h1>
说明: 正确使用标准 XPath 函数starts-with()