我尝试复制模板匹配的所有元素,属性和文本,但span class =" mark"注意事项。 源代码
<p><img src="note.jpg"/><span class="mark">Note:</span> Text <span class="mark">Text</span> Text</p>
代码应该在转换后看起来像
<note>
<p>Text <span class="new">Text</span> Text</p></note>
我的xls(它复制了span class =&#34; mark note:also)
<xsl:template match="p[img/@src='note.pjpg']">
<note>
<p>
<xsl:apply-templates select="text()"/>
</p>
</note>
</xsl:template>
答案 0 :(得分:0)
你的问题很混乱,因为:
note.png
与note.jpg
; span
以外的所有内容class
=&#34;新&#34; -
但是不你的输出显示的内容。应用以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="p[img/@src='note.jpg']">
<note>
<p>
<xsl:apply-templates select="text() | span[@class='new']"/>
</p>
</note>
</xsl:template>
</xsl:stylesheet>
输入的将返回:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<p> Text <span class="new">Text</span> Text</p>
</note>
要保留span
以外的所有内容class
=&#34;标记&#34;,请执行:
<xsl:template match="p[img/@src='note.jpg']">
<note>
<p>
<xsl:apply-templates select="node()[not(self::span[@class='mark'])]"/>
</p>
</note>
</xsl:template>
要保留除span
=&#34;标记&#34;之外的所有内容,您可以执行以下操作:
class