我正在使用 Saxon9HE 来转换一些 XML 2.0。来自 Java 类;解决方案来自这个较早的问题
,我正在将双管道分隔的文本转换为 XML。
但是,某些字段包含人们的简历,并且转换会引发标题中提到的循环错误。
有没有办法解决这个问题?我读到了增加模板堆栈的最大深度,但这仅适用于氧气;Saxon9HE.jar 中有类似的设置吗?
这是代码,您也可以点击上面的链接获取代码
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="str">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:analyze-string select="." regex="\|((\|\s*[^|]+\s*\|)+)\|">
<xsl:matching-substring>
<xsl:analyze-string select="regex-group(1)" regex="\|\s*(\w+):([^|]+?)\s*\|">
<xsl:matching-substring>
<xsl:element name="{regex-group(1)}">
<xsl:value-of select="regex-group(2)"/>
</xsl:element>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
谢谢,