XSL 1.0 で名前空間を使用して要素を作成したいのですが、次のようにします。
<element xmlns:a = '...' xmlns:b = '...' xmlns = '...' >
なんらかの理由で XSL 2.0 を<xsl:namespace>
拡張機能付きで使用できません。XSL 1.0 の各要素に対して宣言された許可された名前空間は 1 つだけですが、どうすればよいですか?
よろしく、
XSL 1.0 で名前空間を使用して要素を作成したいのですが、次のようにします。
<element xmlns:a = '...' xmlns:b = '...' xmlns = '...' >
なんらかの理由で XSL 2.0 を<xsl:namespace>
拡張機能付きで使用できません。XSL 1.0 の各要素に対して宣言された許可された名前空間は 1 つだけですが、どうすればよいですか?
よろしく、
私のために働きます。
ファイルを作成した場合test.xsl
:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<root>
<multins xmlns:abc="http://example.com/1" xmlns:def="http://example.com/2" />
</root>
</xsl:template>
</xsl:stylesheet>
そして、それを実行します
xsltproc test.xsl test.xsl
<?xml version="1.0"?>
<root><multins xmlns:abc="http://example.com/1" xmlns:def="http://example.com/2"/></root>
このバージョン情報で:
$ xsltproc --version
Using libxml 20703, libxslt 10124 and libexslt 813
xsltproc was compiled against libxml 20632, libxslt 10124 and libexslt 813
libxslt 10124 was compiled against libxml 20632
libexslt 813 was compiled against libxml 20632
W3C XSLT 2.0 Spec: Making Namespace Nodes を試してください。その要点は、他の要素内に要素を作成して、それらの名前空間をスコープに入れることができるということです。
Example:
<!--XSLT 2.0-->
<data xsi:type="xs:integer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:namespace name="xs" select="'http://www.w3.org/2001/XMLSchema'"/>
<xsl:text>42</xsl:text>
</data>
<!--XSLT 1.0-->
<data xsi:type="xs:integer"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
42
</data>