我有以下代码:
<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>
并在我的文件(file1.xml)中覆盖该OWNINST的STULOAD。 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 :(得分: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>