0

入力:(XML)

<A1Result xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <![CDATA[
    <?xml version="1.0" encoding="UTF-8" ?>
    <ABCD_XML_DATA>
        <Header>
            <MessageId>AGDMY1323292534488</MessageId>
        </Header>
    </ABCD_XML_DATA>
    ]]>
</A1Result>

xslを使用してこの出力が必要です:

<ABCD_XML_DATA>
    <Header>
        <MessageId>AGDMY1323292534488</MessageId>
    </Header>
</ABCD_XML_DATA>

追加情報、私の i/p と o/p は varibales に書き込まれます。

私はこれを試しました、

<xsl:variable name="Data"> 
    <xsl:value-of select="$A1Result" disable-output-escaping="yes"/> 
</xsl:variable>

これを達成する方法を提案してください、ありがとう。

4

2 に答える 2

1

最終的に理解した、ボロディンからの元の答え(以下)も機能します。プロセッサが認識できるように、i/p を解析する必要がありました。

(私は dp xsl プロセッサを使用しているので、名前空間は dp です); 私は昨日同じことを試みていましたが、運が悪かったです。私はそれを解析して動作させる必要がありました。

<xsl:copy-of select="dp:parse(dp:variable('var://context/saved/MyRes')//*[local-name()='A1Result'])" disable-output-escaping="yes"/> 

ここで、「var://context/saved/MyRes」には、質問からの入力 xml があります。

皆さんありがとう。

于 2013-05-21T19:04:37.813 に答える
0

ルート要素の開始タグの後に XML 宣言を含めることができないため、ソース XML は整形式ではありません。

textこの宣言をファイルの先頭に移動する必要があると仮定すると、出力メソッドを使用して必要なものを生成する XSLT 変換を作成できます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:output method="text"/>

  <xsl:template match="/">
  <xsl:value-of select="A1Result"/>
  </xsl:template>

</xsl:stylesheet>

出力

<ABCD_XML_DATA>
    <Header>
        <MessageId>AGDMY1323292534488</MessageId>
    </Header>
</ABCD_XML_DATA>

アップデート

CDATA から XML 宣言を削除する場合は、次の方法を使用するのが最善です。

<xsl:value-of select="substring-after(A1Result, '?>')"/>
于 2013-05-17T21:08:56.927 に答える