XSLT - 根据切片内容取消注释元素

时间:2017-10-31 05:46:49

标签: xml xslt

输入XML

apply plugin: 'kotlin-android'

输出应该是,

<section counter="no" type="index">
<title><target id="page417"/>Index</title>
<para>Page numbers in italics represent applications. Page numbers followed by <emph type="italic">f</emph> and <emph type="italic">t</emph> indicate figures and tables, respectively.</para>
<section counter="no">
<title>A</title>
....................
<litem><para>Ammonia/ammonium ion (NH<sub>3</sub>/<!--<inline-figure xlink:href="images/9781604063172_in108.jpg"/>-->)</para>
.....................
</section>
</section>

我的xslt就像,

<section counter="no" type="index">
<title><target id="page417"/>Index</title>
<para>Page numbers in italics represent applications. Page numbers followed by <emph type="italic">f</emph> and <emph type="italic">t</emph> indicate figures and tables, respectively.</para>
<section counter="no">
<title>A</title>
....................
<litem><para>Ammonia/ammonium ion (NH<sub>3</sub>/<inline-figure xlink:href="images/9781604063172_in108.jpg"/>)</para>
.....................
</section>

我们需要根据标题内容删除评论。使用上面的xslt时,从节点中提取所有内容。输出中只有值。你能指导我们吗?

1 个答案:

答案 0 :(得分:0)

您对问题的描述&#34;取消注释元素&#34;建议您不要在这里考虑实际数据模型。没有要取消注释的元素:有一个包含文本的注释,其中包含XML标记,可以对其进行解析以创建元素。

处理此问题的最佳方法是提取注释文本并将其提交给XML解析器。在XSLT 3.0中,您可以通过调用parse-xml()或parse-xml-fragment()函数来完成此操作。在早期版本中,您将需要使用扩展功能(可能从您的供应商处获得,或者您可以自己编写。

disable-output-escaping可以在某些情况下解决问题,但它是一个粗糙的工具,因为(a)它只适用于某些情况,(b)你不能对内容进行大量操作在输出之前。