2015-10-05 51 views
0

我有以下代碼:如何使用樣式表從另一個XML文檔複製特定節點?

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/> 
    <xsl:strip-space elements="*"/> 

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

    <xsl:template match="Student/Instance[OWNINST = document('File2.xml')/studentstoamend/STUDENT/OWNINST]/STULOAD"> 
     <xsl:copy> 
      <xsl:copy-of select=""/> 
     </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

,我需要從file2.xml這是按以下格式拿起每個OWNINST的STULOAD:

<?xml version="1.0" encoding="UTF-8"?> 
<studentstoamend> 
    <STUDENT><OWNINST>123456|2</OWNINST><STULOAD>0</STULOAD></STUDENT> 
    <STUDENT><OWNINST>654321|1</OWNINST><STULOAD>100</STULOAD></STUDENT> 
</studentstoamend> 

並覆蓋了該STULOAD OWNINST在我的文件(file1.xml)中。 File1擁有比file2更多的OWNINST,而file2中未引用的則不應該更新。

<Institution> 
    <Student> 
     <Instance> 
     <OWNINST>123456|2</OWNINST> 
     <STULOAD>3</STULOAD> 
     </Instance> 
    </Student> 
    <Student> 
     <Instance> 
     <OWNINST>111111|3</OWNINST> 
     <STULOAD>18</STULOAD> 
     </Instance> 
    </Student> 
</Institution> 

我不能讓我的副本聲明工作 - 如果這是正確的方式來做到這一點。

任何幫助表示讚賞。

+0

這是如何不同:http://stackoverflow.com/questions/32699375/change-multiple-values-in-an-xml-file-to-those-referenced-in-another-xml-檔案? –

回答

1

我想你只是想從其他文檔複製,例如

<xsl:template match="Student/Instance[OWNINST = document('File2.xml')/studentstoamend/STUDENT/OWNINST]/STULOAD"> 
    <xsl:copy-of select="document('File2.xml')/studentstoamend/STUDENT[OWNINST = current()/../OWNINST]/STULOAD"/> 
</xsl:template> 
+0

非常好,謝謝。 – MartinB

相關問題