我有以下 XML 代码:
<detaileddescription>
<para>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum aliquam
interdum erat, <computeroutput>monospace output</computeroutput> eget rhoncus nunc
porttitor ut. Ut ac metus sed erat rutrum dignissim.
<parameterlist kind="param">
<parameteritem>
<parameternamelist>
<parametername>item1</parametername>
</parameternamelist>
<parameterdescription>
<para>Param description.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return">
<para>
<computeroutput>ERR</computeroutput> mattis nunc sed velit ultricies
volutpat. Suspendisse potenti. Vivamus nec ligula blandit urna lobortis
tempus.
</para>
</simplesect>
</para>
</detaileddescription>
我想仅对 detaileddescription/para
的文本节点子节点使用 xsl:apply-templates元素和 <computeroutput>
文本节点内的元素。换句话说,我只想将 apply-templates 应用于以下内容:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum aliquam
interdum erat, <computeroutput>monospace output</computeroutput> eget rhoncus nunc
porttitor ut. Ut ac metus sed erat rutrum dignissim.
谁能告诉我如何使用 XSLT 2.0 和 XPath 2.0 来做到这一点?
最佳答案
如果我正确理解你的问题,这应该有效:
<xsl:apply-templates select="detaileddescription/para/(text()|computeroutput)"/>
当然,取决于上下文注释。否则,您也可以指仅适合您想要的元素的相应模板:
<xsl:template match="detaileddescription/para/(text()|computeroutput)"/>
<xsl:copy-of select="." />
<!-- or whatever you want to do with it -->
</xsl:template>
希望这有帮助,
关于XSLT/XPath : how to use xsl:apply-templates on all but specific elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752656/