2016-07-07 6 views
0

私はxmlドキュメントをHMTLに解析しています。私はいくつかの関連要素を選択するだけです。問題は、このXMLドキュメントにはエスケープされたxmlが含まれていることと、出力の一部を解析する必要があることです。xsltがXML内でxmlをエスケープしました

のコンテンツを取得するのに私はdisable-output-escaping="yes"を使用していますが、この結果のxmlが私のxslから再びアクセスできる方法はわかりません。私はあなたがdocumentidをどうするつもり正確に何によって<ApprovedData>

`<?xml version="1.0" encoding="utf-8"?> 
<Message><Method>OCESIIJS</Method> 
<ApprovedData>&lt;transfers&gt; 
    &lt;transfer action="approve"&gt; 
     &lt;amount&gt;0&lt;/amount&gt; 
     &lt;type&gt;Document&lt;/type&gt; 
     &lt;hostref&gt;0&lt;/hostref&gt; 
     &lt;cdnidfr&gt;0&lt;/cdnidfr&gt; 
     &lt;documentid&gt;zzzzyyyyxxxx;/documentid&gt; 
     &lt;signdocument&gt;true&lt;/signdocument&gt; 
    &lt;/transfer&gt; 
&lt;/transfers 
&gt; 
</ApprovedData> 
<Message> 
.....` 
+0

どのXSLTプロセッサを使用しますか?例えば、Saxon 9.7では、XPath 3.0関数https://www.w3.org/TR/xpath-functions-30/#func-parse-xmlにアクセスできます。 XSLTプロセッサによっては、C#(XslCompiledTransformなど)やJScript(MSXMLなど)で拡張機能を記述することもできます。 –

+0

参照:http://stackoverflow.com/a/29205050/3016153 –

+0

有効なXMLの場合は、単に 'sed'などを使ってエスケープすることができます。 –

答えて

0

<documentid>要素を参照しているテンプレートを作成するにはどうすればよい

、これは、または有用ではないかもしれない可能性があります

<xsl:template match="Message"> 
    <xsl:variable name="documentid" select="./ApprovedData/text()" /> 
    <xsl:value-of select="substring-before(substring-after($documentid, 'documentid&gt;'), ';/documentid')" /> 
    </xsl:template> 

文書IDの後に&ltを切り取ったように見えるので、文字列を変更する必要があります。

関連する問題