我需要一些 XSLT(或其他东西- 见下文)用替代字符替换所有属性中的换行符。
我必须处理将所有数据存储为属性的遗留 XML,并使用换行符来表达基数。例如:
<sample>
<p att="John
Paul
Ringo"></p>
</sample>
当我在 Java 中解析文件时(根据 XML 规范),这些换行符被替换为空格,但是我希望将它们视为一个列表,因此这种行为并不是特别有用。
我的“解决方案”是使用 XSLT 将所有属性中的所有换行符替换为其他分隔符 - 但我对 XSLT 的了解为零。到目前为止,我看到的所有示例要么非常具体,要么替换了节点内容而不是属性值。
我曾涉足 XSLT 2.0,replace()
但很难将所有东西放在一起。
XSLT 甚至是正确的解决方案吗?使用下面的 XSLT:
<xsl:template match="sample/*">
<xsl:for-each select="@*">
<xsl:value-of select="replace(current(), '\n', '|')"/>
</xsl:for-each>
</xsl:template>
应用于示例 XML 使用 Saxon 输出以下内容:
John Paul Ringo
显然这种格式不是我所追求的——这只是为了试验replace()
——但是当我们进行 XSLT 处理时,换行符是否已经被规范化了?如果是这样,是否有任何其他方法可以使用 Java 解析器将这些值解析为书面形式?到目前为止,我只使用过 JAXB。