この変換(デモのみの目的のために新しいヘッダをXSLTスタイルシートに埋め込まれている):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes"/>
<my:header>
<header>
<c>cccc</c>
</header>
</my:header>
<xsl:variable name="vHeaderDoc" select="document('')/*/my:header"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="header">
<xsl:copy-of select="$vHeaderDoc/*"/>
</xsl:template>
</xsl:stylesheet>
に塗布提供されたXML文書:
名前のファイルになります
<xsl:variable name="vHeaderDoc" select="document('Header.xml')"/>
とheader
文書:本当場合
<doc1>
<header xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my:my">
<c>cccc</c>
</header>
<content>
<z>zzzzzzzzzzzzz</z>
</content>
</doc1>
あなたはを持っています:
<doc1>
<header>
<a>aaaa</a>
<b>bbbb</b>
</header>
<content>
<z>zzzzzzzzzzzzz</z>
</content>
</doc1>
は指名手配、正しい結果を生成します'Header.xml'
は、XSLTスタイルシートと同じディレクトリにあります(別のディレクトリにある場合は、それに応じてドキュメントのURLを変更してください)。
実際には、xsl:
名前空間ノードはheader
要素にコピーされません。標準のXSLT機能document()
の使用:
はノートを行います。
mhm ..これは問題ではないようです。単純にXSLTを学ぼうとしましたか? ) – bluish
これには「宿題」のタグがあります – Boldewyn
複数の入力ソースを扱う方法を尋ねていますか? –