簡體   English   中英

如何使用XSLT合並兩個XML?

[英]How can I use XSLT to combine two XML?

我嘗試如何使用XSLT組裝XML層次結構中的代碼

a.xml:

    <Xml>
        <Classes>
            <Class Name="BIOLOGY101" ClassId="11"/>
            <Class Name="PHYSICS101" ClassId="13"/>
            <Class Name="CALCULUS101" ClassId="17"/>
            <Class Name="BIOLOGY101" ClassId="19"/>
        </Classes>
    </Xml>

b.xml:

<Xml>
    <Students>
        <Student Name="Bob Johnson" ClassId="11"/>
        <Student Name="Bob Johnson" ClassId="17"/>
        <Student Name="Bob Johnson" ClassId="19"/>
        <Student Name="Joe Jackson" ClassId="11"/>
        <Student Name="Joe Jackson" ClassId="13"/>
        <Student Name="Joe Jackson" ClassId="17"/>
        <Student Name="Rick Robertson" ClassId="13"/>
        <Student Name="Rick Robertson" ClassId="17"/>
        <Student Name="Rick Robertson" ClassId="19"/>
    </Students>
</Xml>

樣式表(merge.xsl):

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Class">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <!-- Apply <Student> elements from b.xml -->
      <xsl:apply-templates
        select="document('b.xml')/Xml/Students/Student
          [@ClassId = current()/@ClassId]"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Student">
    <xsl:copy>
      <xsl:apply-templates select="@Name"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

希望輸出:

    <?xml version="1.0"?>
<Xml>
  <Classes>
    <Class Name="BIOLOGY101" ClassId="11">
      <Student Name="Bob Johnson"/>
      <Student Name="Joe Jackson"/>
    </Class>
    <Class Name="PHYSICS101" ClassId="13">
      <Student Name="Joe Jackson"/>
      <Student Name="Rick Robertson"/>
    </Class>
    <Class Name="CALCULUS101" ClassId="17">
      <Student Name="Bob Johnson"/>
      <Student Name="Joe Jackson"/>
      <Student Name="Rick Robertson"/>
    </Class>
    <Class Name="BIOLOGY101" ClassId="19">
      <Student Name="Bob Johnson"/>
      <Student Name="Rick Robertson"/>
    </Class>
  </Classes>
</Xml>

但是當我使用a.xml啟動時,我得到的結果是空白..在我的瀏覽器mozilla中什么也沒顯示。.(注意:在頭文件a.xml中,我編寫此代碼:

    <?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="merge.xsl"?>

有人可以請我嗎?? 謝謝..

一切正常。 F12以查看結果。 有關更多信息,請參考為什么瀏覽器(Firefox / Chrome)顯示空白結果。

隨附的屏幕截圖(開發人員工具)

在此處輸入圖片說明

為什么XSLT在瀏覽器中不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM