投稿したスニペットは整形式の XML でさえありません。MyObject
開始タグには、>
必要な投稿の代わりに so がありません
<MyObject objectInformation="<node1><node2>some Information here</node2><node3><![CDATA[<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Verdana" SIZE="11" COLOR="#403F3F" LETTERSPACING="0" KERNING="0"><B><I>comment in for new object</I></B></FONT></P></TEXTFORMAT>]]></node3><node4>07/18/2013</node4></node1>"></MyObject>
saxon:parse
XSLT が拡張機能(または XSLT/XPath 3.0 ) にアクセスできる Saxon 9 の商用バージョンでの処理に関しては、動作するはずですが、要素の属性のparse-xml
値を 1 回、2 回使用する必要があります。、次に要素の値でコードが実行するようにします。objectInformation
MyObject
node3
<xsl:template match="MyObject">
<xsl:apply-templates select="saxon:parse(@objectInformation)/node()"/>
</xsl:template>
<xsl:template match="node3">
<xsl:apply-templates select="saxon:parse(.)/node()"/>
</xsl:template>
<xsl:template match="TEXTFORMAT">
<!-- now create or transform the elements as needed -->
</xsl:template>
より完全な例を示すために、スタイルシートを適用すると
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:saxon="http://saxon.sf.net/"
exclude-result-prefixes="saxon"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="MyObject">
<xsl:apply-templates select="saxon:parse(@objectInformation)/node()"/>
</xsl:template>
<xsl:template match="node3">
<xsl:apply-templates select="saxon:parse(.)/node()"/>
</xsl:template>
<xsl:template match="TEXTFORMAT">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="P">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
</xsl:stylesheet>
入力へ
<MyObject objectInformation="<node1><node2>some Information here</node2><node3><![CDATA[<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Verdana" SIZE="11" COLOR="#403F3F" LETTERSPACING="0" KERNING="0"><B><I>comment in for new object</I></B></FONT></P></TEXTFORMAT>]]></node3><node4>07/18/2013</node4></node1>"></MyObject>
Saxon 9.1.0.8 (サポートする Saxon 9 の最新のオープン ソース バージョンsaxon:parse
) を使用すると、結果が得られます
<?xml version="1.0" encoding="UTF-8"?>some Information here<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:block>comment in for new object</fo:block>
</fo:block>07/18/2013
これは完全で有効な XSL-FO ドキュメントではありませんが、入力でエスケープされてから解析される要素のテンプレートsaxon:parse
が呼び出されることを示しています。そのため、必要に応じて他の要素を変換し、有効な XSL-FO ドキュメントを作成するために、さらにテンプレートを追加するだけで済みます。ヘルプが必要な場合は、入力要素にどの FO 構造が必要かを概説する新しい質問をすることをお勧めします。 (つまり、それらの要素をどのように変換したいnode
か、それらの HTML 要素をどのように変換したいか) が解析された場合は、私よりも XSL-FO に精通している誰かが助けてくれることを願っています。