2017-05-29 14 views
0

schema(2)に対して検証するXMLインスタンスを、古いスキーマ(1)に対して検証するインスタンスに変換したいと考えています。XSLT出力は異なる名前空間を持ちますが、入力と同じ名前空間接頭辞を持ちます

2つのスキーマは異なる名前空間URIを使用しますが、それらのURIには同じ要素名プレフィックスを共有します。

変換する前に入力に使用されている名前空間接頭辞を変更するだけの唯一の回避策はありますか?または、それをXSLTに組み込むことはできますか?

+1

スキーマ任意の接頭辞を定義していない、彼らはターゲットの名前空間を定義します。 –

+0

はい、そうです。私は、XSLT内で使用する作業用プレフィックスを割り当てるだけで、インスタンスがプレフィックスとして使用するかどうかにかかわらず、インスタンス内に見つかった** URI **を認識することを前提としています。 – Michael

+0

私は変換する必要があるインスタンスは、スキーマの利便性として定義された接頭辞を使用し、両方の(1)と(2)は2つの異なるURIの同じ接頭辞を使用します。 – Michael

答えて

2

変換する前に 入力に使用されている名前空間プレフィックスを変更するだけの唯一の回避策はありますか?

いいえ、解決策は、スタイルシートのソースXML名前空間に別の接頭辞を使用することです。ここでは、最小限の例を示します。

XML

<abc:root xmlns:abc="www.example.com/source"/> 

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:src="www.example.com/source" 
xmlns:abc="www.example.com/target" 
exclude-result-prefixes="src"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="src:*"> 
    <xsl:element name="abc:{local-name()}"> 
     <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

</xsl:stylesheet> 

結果

<?xml version="1.0" encoding="UTF-8"?> 
<abc:root xmlns:abc="www.example.com/target"/> 
+0

これは私の仕事の前提で、投稿後2分です。完成したXSLTがこれに基づいて行われると、私はその質問を終了します。 – Michael

関連する問題