我有XSLT的以下问题.
在XML文档中,我<h></h>在不同级别的<div></div>标记中嵌入了几个标记.
为了将不同div部分中的所有内容更改<h></h>为<h1></h1> <h2></h2> <h3></h3>相应的内容,我编写了以下XSLT脚本.
<xsl:template match="//TU:div/TU:h">
<h1><xsl:apply-templates/></h1>
</xsl:template>
<xsl:template match="//TU:div/TU:div/TU:h">
<h2><xsl:apply-templates/></h2>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
等等....问题是我希望其他一切保持完全相同.我只希望<h></h>标签改变.
不幸的是,当我处理文档时,<h></h>标签会根据需要改变,但所有其他元素都会消失.
除了简单地<xsl:template>为每个元素编写一个之外,还有另一个解决这个问题的方法,这样每个给定的元素都会被自己替换掉吗?
例如对于元素<p></p>:
<xsl:template match="//TU:p">
<p><xsl:apply-template/></p>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
我需要做这样的事情来保存每个元素,还是有更好的方法?
谢谢你的帮助.
添加身份模板以匹配其他所有内容......
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="TU:h">
<xsl:variable name="id" select="count(ancestor::TU:div)" />
<xsl:element name="h{$id}" namespace="TUSTEP">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2074 次 |
| 最近记录: |