xmlテキストを含む要素を含む入力xmlファイルがあります。要素テキストを読み込んでノードセットにして、xpathで検索することができます。xalan:ノードセットはノードではなくテキストだけをレンダリングします
<TEMPLATE_STRUCTURE_XML><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TRANSACTION>
<VERSION>1.3</VERSION>
<SCREEN>something123</SCREEN>
</TRANSACTION>
]]></TEMPLATE_STRUCTURE_XML>
私は値something123を取得したい。この場合:これは作品です。
問題は、私は(ハードコード)を入れた場合、そのXSLでインナーxmlファイルのセクション、のXalanです:ノードセット()正常に動作しますが、私はXSLを使用する場合、それは動作しません:価値の 。 oXygen XMLeditorは、value-ofの結果がノードではなくプレーンテキストになったことを私に示しています。
次の作品は:
<xsl:variable name="statementSummaryData">
<ss_Set>
<TRANSACTION>
<VERSION>1.3</VERSION>
<SCREEN>something123
</SCREEN>
</TRANSACTION>
</ss_Set>
</xsl:variable>
<xsl:variable xmlns:xalan="http://xml.apache.org/xalan" name="ssTemplatesNodeSet" select="xalan:nodeset($statementSummaryData)"/>
<xsl:value-of select="substring-before($ssTemplatesNodeSet//SCREEN,' ')"/>
以下は動作しません。 <ss_Set>要素がノードになりますが、価値の出力は<内ss_Set >プレーンテキストになり、次の
<xsl:variable name="statementSummaryWithHeader">
<xsl:value-of select="TEMPLATE_STRUCTURE_XML" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryWithNoHeader">
<xsl:value-of select="substring-after($statementSummaryWithHeader,'?>')" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryData">
<ss_Set>
<xsl:value-of select="$statementSummaryWithNoHeader" disable-output-escaping="yes"/>
</ss_Set>
</xsl:variable>
<xsl:variable xmlns:xalan="http://xml.apache.org/xalan" name="ssTemplatesNodeSet" select="xalan:nodeset($statementSummaryData)"/>
<xsl:value-of select="substring-before($ssTemplatesNodeSet//SCREEN,' ')"/>
のいずれかに動作しません:
<xsl:variable name="statementSummaryWithHeader">
<xsl:value-of select="TEMPLATE_STRUCTURE_XML" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryWithNoHeader">
<xsl:value-of select="substring-after($statementSummaryWithHeader,'?>')" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryData">
<ss_Set>
<xsl:value-of xmlns:xalan="http://xml.apache.org/xalan" select="xalan:nodeset($statementSummaryWithNoHeader)"/>
</ss_Set>
</xsl:variable>
<xsl:variable xmlns:xalan="http://xml.apache.org/xalan" name="ssTemplatesNodeSet" select="xalan:nodeset($statementSummaryData)"/>
<xsl:value-of select="substring-before($ssTemplatesNodeSet//SCREEN,' ')"/>
を私はいくつかの実装があると考えているノードセット()文字列を指定した場合、解析を行いますそれには-xml()がありますが、Xalanの実装がそれらのいずれかであるかどうかはわかりません。 –
@MichaelKay私は以前この会話があったと信じています。私はこれを行う 'node-set()'の実装について知らない。私は確かにXalanがそうでないことを知っている:http://xsltransform.net/bFWR5EF –
よかった、それを得た。だから私はその特定の内部要素の出力を得るためにsubstring-beforeとsub-stringを使うつもりです。しかし、私は、を使用してノードを作成することによって、ツリーを動的に構築することでそれを行う別の方法を見ています。詳細はこちら(あなたの助けを借りてマイケルに感謝):http://stackoverflow.com/questions/5418493/create-nodes-from-string-variable –