XML 2.0 を変換するために Saxon9HE を使用しています。Java クラスから。解決策は、この以前の質問
からです。二重パイプで区切られたテキストを XML に変換しています。
ただし、一部のフィールドには人の履歴書が含まれており、変換によってタイトルに記載されているループ エラーがスローされます。
これを修正する方法はありますか?テンプレートスタックの最大深度を増やすことについて読みましたが、それは Oxygen にのみ適用されます。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>
ありがとうございました、