2011-02-01 12 views
0

を使用してXMLファイルに追加の名前空間/ schemalocationsを追加します。I変換するXSLT

<ppx xmlns="http://www.p.com/ppx/1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.p.com/ppx/1 http://www.p.com/ppx/1/ppx.xsd"> 
<p></p></ppx> 

へ:

<ppx xmlns="http://www.p.com/ppx/1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:ppxx="http://www.m.com/mExt/v1" 
xmlns:ppxtpx="http://www.m.com/mExt/v3" 
xsi:schemaLocation="http://www.p.com/ppx/1 http://www.p.com/ppx/1/ppx.xsd 
http://www.m.com/mExt/v1 http://www.m.com/mExt/v1/ppxv1.xsd 
http://www.m.com/mExt/v3 http://www.m.com/mExt/v3/ppxv3.xsd"> 
<p></p></ppx> 

私は、既存のXMLにいくつかの名前空間宣言とその関連schemaLocationsを追加する必要がありますそのXML内の他のものを変更することなく原則として

答えて

1

それは簡単です:しかし、それは入力はあなたが持っている例異なることができますどのくらいに応じて、もう少し複雑得ることができる

<xsl:template match="*"> 
    <xsl:copy> 
    <xsl:copy-of select="@*"/> 
    <xsl:apply-templates/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="ppx"> 
<ppx xmlns="http://www.p.com/ppx/1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:ppxx="http://www.m.com/mExt/v1" 
    xmlns:ppxtpx="http://www.m.com/mExt/v3" 
    xsi:schemaLocation="http://www.p.com/ppx/1 http://www.p.com/ppx/1/ppx.xsd 
    http://www.m.com/mExt/v1 http://www.m.com/mExt/v1/ppxv1.xsd 
    http://www.m.com/mExt/v3 http://www.m.com/mExt/v3/ppxv3.xsd"> 
    <xsl:apply-templates/> 
    </ppx> 
</xsl:template> 

:それはちょうど、標準の「改変アイデンティティーテンプレート」パターンを必要とします私たちに示した。たとえば、ルート要素の名前が常にppxでない場合、または追加する名前空間が事前にわかっていない場合などです。したがって、問題の詳細を説明する必要があるかもしれません。

+0

これはうまくいきました:-)私はマイナーチェンジを行いました。第2のテンプレートは、そのケースに対してする必要があります。 – xmllist