から名前空間を除外されていません。「のxmlns:のxmlnsは、」XSLTを使用してXML出力ファイルに追加取得され、除外結果-プレフィックスは=「SIIは、」私の要件は、xmlファイルの下に変換することである要素
<?xml version="1.0" encoding="UTF-8"?>
<JEES_SSI>
<P_VAT_ID>10122</P_VAT_ID>
<LIST_G_LE_DETAILS>
<G_LE_DETAILS>
<ENTITYNAME>LE NAME</ENTITYNAME>
<TAXPAYEID>A0000000A</TAXPAYEID>
</G_LE_DETAILS>
</LIST_G_LE_DETAILS>
</JEES_SSI>
新しいXMLファイル:(するために必要な出力:)
<?xml version="1.0" encoding="UTF-8"?>
<siiLR:SuministroLRFacturasRecibidas
xmlns:siiLR="https:/www.firstschema/SLR.xsd"
xmlns:sii="https://www.secondschema/sinfo.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.firstschema/ SLR.xsd">
<sii:Cabecera>
<sii:Titular>
<sii:NombreRazon>LE NAME</sii:NombreRazon>
<sii:NIF>A0000000A</sii:NIF>
</sii:Titular>
</sii:Cabecera>
</siiLR:SuministroLRFacturasRecibidas>
と私はXSLの下に使用しています:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:siiLR="https:/www.firstschema/SLR.xsd"
xmlns:sii="https://www.secondschema/sinfo.xsd"
exclude-result-prefixes="sii">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:element name="siiLR:SuministroLRFacturasRecibidas">
<xsl:attribute name="xmlns:siiLR"> <xsl:value-of select= "'https:/www.firstschema/SLR.xsd'" /></xsl:attribute>
<xsl:attribute name="xmlns:sii"> <xsl:value-of select= "'https://www.secondschema/sinfo.xsd'"/></xsl:attribute>
<xsl:attribute name="xsi:schemaLocation"> <xsl:value-of select= "'https://www.secondschema/ sinfo.xsd'" /> </xsl:attribute>
<xsl:element name="sii:Cabecera">
<xsl:element name="sii:Titular">
<xsl:element name="sii:NombreRazon"> <xsl:value-of select= "JEES_SSI/LIST_G_LE_DETAILS/G_LE_DETAILS/ENTITYNAME" /> </xsl:element>
<xsl:element name="sii:NIF"> <xsl:value-of select= "JEES_SSI/LIST_G_LE_DETAILS/G_LE_DETAILS/TAXPAYERID" /> </xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
を
出力私が得た:のxmlns = "http://www.w3.org/2000/xmlns/" エラーの原因となっている。
出力は のxmlnsのための追加の文字列を持っています: XML解析エラー:予約された接頭辞(xmlns)を宣言したり、宣言したり、宣言したりしないでください。 、sii名前空間の最初の要素にnamespaceが追加されています。
<?xml version = '1.0' encoding = 'UTF-8'?>
<siiLR:SuministroLRFacturasRecibidas xmlns:siiLR="https:/www.firstschema/SLR.xsd"
xmlns:xmlns="http://www.w3.org/2000/xmlns/"
xmlns:sii="https://www.secondschema/sinfo.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.firstschema/ SLR.xsd">
<sii:Cabecera xmlns:sii="https://www.secondschema/sinfo.xsd">
<sii:Titular>
<sii:NombreRazon>LE NAME</sii:NombreRazon>
<sii:NIF>A0000000A</sii:NIF>
</sii:Titular>
</sii:Cabecera>
</siiLR:SuministroLRFacturasRecibidas>
希望するxml出力ファイルを取得するには、xslファイルを修正してください。 xmlファイルの要素に使用される2つの異なる名前空間接頭辞(siiLrとsii)があります。 除外結果-プレフィックスは= "SII" SIIから名前空間URIを除くされていません。
カベセラ
をModiifedのXLS(implementaing提案@Stefan Hegny提案: 問題:のxmlns:のxmlns = "のhttp:// WWW。 w3.org/2000/xmlns/」もはや私は、XSLの下に使用 場合は表示されていない(削除のxmlnsを:siiLRとのxmlnsを:ルート要素からSII属性)。XLSの上使用して<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:siiLR="https:/www.firstschema/SLR.xsd"
xmlns:sii="https://www.secondschema/sinfo.xsd"
>
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:element name="siiLR:SuministroLRFacturasRecibidas">
<xsl:attribute name="xsi:schemaLocation"> <xsl:value-of select= "'https://www.secondschema/ sinfo.xsd'" /> </xsl:attribute>
<xsl:element name="sii:Cabecera">
<xsl:element name="sii:Titular">
<xsl:element name="sii:NombreRazon"> <xsl:value-of select= "JEES_SSI/LIST_G_LE_DETAILS/G_LE_DETAILS/ENTITYNAME" /> </xsl:element>
<xsl:element name="sii:NIF"> <xsl:value-of select= "JEES_SSI/LIST_G_LE_DETAILS/G_LE_DETAILS/TAXPAYERID" /> </xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
新しい出力:
<?xml version = '1.0' encoding = 'UTF-8'?>
<siiLR:SuministroLRFacturasRecibidas xmlns:siiLR="https:/www.firstschema/SLR.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.firstschema/ SLR.xsd">
<sii:Cabecera xmlns:sii="https://www.secondschema/sinfo.xsd">
<sii:Titular>
<sii:NombreRazon>LE NAME</sii:NombreRazon>
<sii:NIF>A0000000A</sii:NIF>
</sii:Titular>
</sii:Cabecera>
</siiLR:SuministroLRFacturasRecibidas>
名前空間siiのリンクが要素 "Cabecera"に表示されています。これは、ルート要素に表示されますが、
Output with multiple sii element
最終的なXMLファイルは、XSDを使用して検証する必要があります。そして、第2スキーマsinfo.xsdは最初の1つのSLR.xsdで参照されています。したがって接頭辞(sii)がないと、xml filwは検証されません。 –
なので、sii名前空間接頭辞は問題ではありませんが、なぜ 'name =" xmlns:sii "'ですか?ああ、私はあなたが手で参照しているスキーマを実装しようとしています...よく、siiとsiiLR名前空間の接頭辞は上の宣言から継承され、 '。 –
ステファンありがとうございます。ルート要素SuministroLRFacturasRecibidasからsiiとsiiLRに使用されている属性を削除すると、出力にはsii名前空間の情報がありません。 xmlns:xmlns = "http://www.w3.org/2000/xmlns/"がoutput.butに表示されていませんが、子要素 –