gpt4 book ai didi

xml - XSL 完全删除注释(包括空格)

转载 作者:行者123 更新时间:2023-12-05 02:25:06 26 4
gpt4 key购买 nike

我有一些 xml 文件应该遵循这种格式:

<root>
<question>What is the answer?</question>
<answer choice="A">Some</answer>
<answer choice="B">Answer</answer>
<answer choice="C">Text</answer>
</root>

但它来自带有评论的 Web 界面(我无法控制输出),最终看起来像这样:

<root>
<question>What is the answer?</question>
<answer choice="A"><!--some comment
-->
Some
</answer choice="B">
<answer>

<!--some comment
-->
Answer
</answer>
<answer choice="C"><!--another comment
-->
Text</answer>
</root>

输出 - 删除注释后的结果如下:

What is the answer?
A\t


Some
B\t
Answer
C\t
Text

现在,我设置了一个 xsl 工作表,使用以下方法删除注释:

<xsl:template match="comment()"/>

和其他一些身份模板应用程序。

我会使用 normalize-space(),但它会从答案文本中删除我想要的换行符。我正在寻找的是一种仅删除“空白”或前后“额外”换行符的方法。有什么好的方法吗?

另请注意:最终输出是使用 XSLT 1.0 的 Adob​​e Indesign。

[编辑 - XSL 在下方]。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:strip-space elements="*" />

<xsl:template match = "@*|node()|processing-instruction()" name="identity">
<xsl:copy>
<xsl:apply-templates select="@*|node()|processing-instruction()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="comment()"/>

<xsl:template match="//answer"><xsl:value-of select="@choice"/>
<xsl:text>&#09;</xsl:text><xsl:call-template name="identity"/>
</xsl:template>

<xsl:template match="//question">
<xsl:text>00&#09;</xsl:text><xsl:call-template name="identity"/>
</xsl:template>

</xsl:stylesheet>

最佳答案

这个样式表:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()" name="identity">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="comment()"/>
<xsl:template match="@choice">
<xsl:value-of select="concat(.,'&#x9;')"/>
</xsl:template>
<xsl:template match="question|answer">
<xsl:call-template name="identity"/>
<xsl:text>&#xA;</xsl:text>
</xsl:template>
</xsl:stylesheet>

输出:

<root><question>What is the answer?</question>
<answer>A Some</answer>
<answer>B Answer</answer>
<answer>C Text</answer>
</root>

关于xml - XSL 完全删除注释(包括空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4446962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com