【发布时间】:2015-07-13 13:15:43
【问题描述】:
我正在尝试使用 XSLT 对一些 XML 进行转换。
我的 xml 是;
<body>
<p>
<a href="http://www.zz.com/abc/z/0/z3970z88-0475-11dz-8603-00144zeabdc1.html#slide0"></a>
Some <strong>strong</strong> text
</p>
</body>
我想把它变成;
<body>
<slideshow data-uuid="z3970z88-0475-11dz-8603-00144zeabdc1/>
<p>Some <strong>strong</strong> text</p>
</body>
到目前为止我所拥有的是;
<xsl:template match="/body/p[a[substring(@href, string-length(@href) - 6) = '#slide0' and string-length(text()) = 0] and count(*) = 1]">
<xsl:apply-templates select="a" />
<xsl:if test="string-length(text()) > 0">
<p>
<xsl:value-of select="text()"/>
</p>
</xsl:if>
</xsl:template>
<xsl:template match="a[substring(@href, string-length(@href) - 6) = '#slide0' and string-length(text()) = 0]">
<slideshow>
<xsl:attribute name="data-uuid">
<xsl:value-of select="substring-before(substring(@href, string-length(@href) - 47), '.html#slide0')" />
</xsl:attribute>
</xsl:template>
但这仅适用于文本没有任何子级的情况,例如 <strong> 标记或另一个 <a> 标记。
有没有人可以解决所有问题。
【问题讨论】: