I以下のXML(ファイル:emcsh.xml
):持って次の変換とは 'のxmlns = ""' せずにXMLのノード全体をコピーし
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="tohtml.xsl"?>
...
<root>
<el>
<d>Some text with <kbd>code</kbd> and <em>prose</em>.</d>
</el>
</root>
(ファイル:tohtml.xsl
):
<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
...
<xsl:template match="d">
<xsl:copy-of select="node() | @*"/>
</xsl:template>
...
<xsl:if test="d">
<div class="tipper">
<xsl:apply-templates select="d"/>
</div>
</xsl:if>
を結果の文字列がある
$ xsltproc tohtml.xsl emcsh.xml > emcsh.html && xmllint --format emcsh.html -o emcsh.html
:次のパイプを使用してファイルを処理した後
...
<div class="tipper">
Some text with <kbd xmlns="">code</kbd> and <em xmlns="">prose</em>.
</div>
...
ほとんど完全ですが、空の属性xmlns=""
を使用しないで変換を実行するにはどうすればよいですか?
ありがとうございました。
、我々は、入力とスタイルシート内の任意の名前空間宣言を参照する必要があります。 –
一般に、 'xmlns =" "'これらの宣言は、ある名前空間の要素(入力から 'd'要素のようなもの)を特定の名前空間の要素に入れると起こります(' div'要素がいくつか名前空間はあなたが示していないスタイルシートの名前空間宣言によって)。名前空間を必要とせず、入力要素が名前空間にない場合、テンプレートがその名前空間を追加する必要がある場合、すべての要素を名前空間に入れないか特定の名前空間に入れるかを決定する必要があることを修正するには –
@MartinHonnen改善された例。 –