0

関連する XSLT スタイルシートを使用して、SOAP 1.1 障害を SOAP 1.2 障害にマップすることを目的として、与えられた BizTalk マップのいくつかの不備を修復しようとしています。

<Value>SOAP 1.2 スキーマでは要素が修飾された列挙値を含むと記述されているため、出力は検証されません。例えば:

<Value>prefix:MustUnderstand</Value>検証します。

<Value>MustUnderstand</Value>ではない;

prefix関連する場所xmlns:prefix="http://www.w3.org/2003/05/soap-envelope'"

入力ドキュメントからこの要素を生成するマークアップは次のとおりです (関連する部分のみ)。

<xsl:element name="Value">
    <xsl:value-of select="s11:Fault/faultcode/text()"/>
</xsl:element>

列挙値を修飾し、適切な名前空間プレフィックスを提供する必要があることを XSLT に認識させるにはどうすればよいですか? 私はxsl:copyvalue-of の代わりに試しましたが、違いはありません。

4

2 に答える 2

0

私の質問に対する直接的な答えは「できません」のようです。この質問は、スキーマを認識しない XML プロセッサは単純な要素のコンテンツ内のテキストを参照するだけで、ある文字列を別の文字列と区別する方法がないことを示唆しています。 . XSLT 1.0 は (あまり) スキーマを認識していないため、要素内の QName を認識することを期待することはまずないようです。

私が見つけた回避策は、「:」文字の前にあるものをすべて取り除き、soap 1.2 エンベロープ名前空間のプレフィックスをその場所に連結するテンプレートを呼び出すことです。

これはひどいですが、これを機能させる唯一の方法のようです。

于 2013-07-06T12:56:42.760 に答える