0

結果で xsd 名前空間を別のものに変換することは可能ですか?

xsl:stylesheet 要素の入力名前空間は次のようになります。

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

出力ルート要素の出力名前空間は次のようになります。

xmlns:xsd="http://www.w3.org/2001/XMLSchema#"

出力のルート要素に 2 番目の名前空間を手動で割り当てようとしましたが、元の名前空間を上書きしているように見えるため、XSLT 変換は "xsd" で始まる要素を認識しなくなりました。

プレフィックスを変更してエイリアスを作成することもオプションではありません。出力 (RDF/XML) でも、要素のプレフィックスは「xsd」と呼ばれる必要があります。

助けてくれてありがとう。

編集:

2 つのファイルの関連部分は次のとおりです。

入力ファイル (XSD):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

なるべき

出力ファイル (RDF/XML):

<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
4

2 に答える 2

1

名前空間内のすべての要素を名前空間に変換する場合http://www.w3.org/2001/XMLSchemaは、http://www.w3.org/2001/XMLSchema#次を使用します

<xsl:template match="xsd:*">
  <xsl:element name="{name()}" namespace="http://www.w3.org/2001/XMLSchema#">
    <xsl:apply-templates select="@* | node()"/>
  </xsl:element>
</xsl:template>

それでも問題が解決しない場合は、お持ちの入力 XML のサンプルと、作成する対応する出力サンプルを提示してください。

于 2013-05-29T12:22:39.990 に答える
0

答え:

数時間かかりましたが、最終的には自分で解決策を見つけました。

まず、結果ファイルからスタイルシートのプレフィックスを除外する必要がありました。

<xsl:stylesheet version="2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="xsd">

次に、出力のルート要素用に新しい XSD 名前空間を作成しました。

<xsl:namespace name="xsd" select="'http://www.w3.org/2001/XMLSchema#'"/>

とにかく、助けてくれてありがとう。

于 2013-05-31T14:40:50.737 に答える