0

これは私の新しい (編集された) より完全なシナリオです。xsl で変換される xml を取得しました。私は顧客から次のような例を受け取りました: infile である XML:

<?xml version="1.0" encoding="utf-8"?>
<xsi:myCompanyImport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <tns:myCompanyHeader xmlns:tns="http://www.MyComp.se/myCompany">
    <tns:sentFr>123456</tns:sentFr>
  </tns:myCompanyHeader>
  <tns:myCompanyUsers xmlns:tns="http://www.MyComp.se/myCompany">
    <tns:myCompanyUser ssn="1234567890">
      <tns:firstName>John</tns:firstName>
    </tns:myCompanyUser>
  </tns:myCompanyUsers>
</xsi:myCompanyImport>

XSL ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                xmlns:tns="http://www.MyComp.se/myCompany"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.MyComp.se/myCompany myCompanyUsers.xsd"
                                xmlns:local="urn:cs">

    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    <xsl:template match="/">
        <xsl:element name="xsi:myCompanyImport" namespace="http://www.w3.org/2001/XMLSchema-instance">
            <!--Start Header-->
            <xsl:element name="tns:myCompanyHeader" >
                <xsl:element name="tns:sentFr" >
                    <xsl:value-of select="_x0023_MyComp_header/@SentFrom" />
                </xsl:element>
            </xsl:element>
            <!--End Header-->

            <!--Start Users-->
            <xsl:element name="tns:myCompanyUsers">
                <!--Loop through persons-->
                <xsl:for-each select="_x0023_MyComp_header/_x0023_MyComp_Employee">
                    <xsl:element name="tns:myCompanyUser" >
                        <xsl:attribute name="ssn">
                            <xsl:value-of select="@inSsn" />
                        </xsl:attribute>
                        <xsl:element name="tns:firstName" >
                            <xsl:value-of select="@inFname"/>
                        </xsl:element>
                    </xsl:element>
                </xsl:for-each>
                <!--End Loop-->
            </xsl:element>
            <!--End Users-->

        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

(xsl の Csharp コードについては気にしないでください。ここには示されていない目的で使用されます。) したがって、結果は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<xsi:myCompanyImport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <tns:myCompanyHeader xmlns:tns="http://www.MyComp.se/myCompany">
    <tns:sentFr>123456</tns:sentFr>
  </tns:myCompanyHeader>
  <tns:myCompanyUsers xmlns:tns="http://www.MyComp.se/myCompany">
    <tns:myCompanyUser ssn="1234567890">
      <tns:firstName>John</tns:firstName>
    </tns:myCompanyUser>
  </tns:myCompanyUsers>
</xsi:myCompanyImport>

しかし、顧客は次のことを望んでいます。

<?xml version="1.0" encoding="utf-8"?>
<xsi:myCompanyImport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <tns:myCompanyHeader xmlns:tns="http://www.MyComp.se/myCompany">
    <tns:sentFr>123456</tns:sentFr>
  </tns:myCompanyHeader>
  <tns:myCompanyUsers xmlns:tns="http://www.MyComp.se/myCompany"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.maxm.se/myCompany myCompanyUsers.xsd">
    <tns:myCompanyUser ssn="1234567890">
      <tns:firstName>John</tns:firstName>
    </tns:myCompanyUser>
  </tns:myCompanyUsers>
</xsi:myCompanyImport>

これをxslに書き込んでxmlに表示するにはどうすればよいですか? さまざまな方法を試しましたが、成功しませんでした。実際には、tns:myCompanyUsers に追加する 2 行だけです。

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.maxm.se/myCompany myCompanyUsers.xsd">

参加したいのですが、成功しません!

4

1 に答える 1