对于某些MODID,我想将下面代码中MODOUT的值从4更改为6,但保留MODOUT的其他值不变。 我想为OWNINST的不同值做这件事 因此,例如,对于OWNINST 1439582 | 1我想将MODOUT更改为4,对于MODID 09 | 24864,09 | 24899而不是09 | 24865,对于OWNINST 1439582 | 1我想将MODOUT更改为4以进行MODID 09 | 12345但不是09 | 24863。我不想更改OWNINST 1439582 | 2的任何模块(突出显示学生可以拥有多个实例) 我熟悉如何使用一个标识符更改实例级别的字段(例如,使用OWNINST更改FUNDCOMP),但不熟悉如何使用两个标识符(即OWNINST和MODID)更改字段。有人可以建议吗?
<Student>
<BIRTHDTE>1986-05-29</BIRTHDTE>
<ULN>8402398897</ULN>
<Instance>
<NUMHUS>1</NUMHUS>
<OWNINST>1439582|1</OWNINST>
<FUNDCOMP>2</FUNDCOMP>
<StudentOnModule>
<MODID>09|24864</MODID>
<MODOUT>4</MODOUT>
<MODSTAT>2</MODSTAT>
</StudentOnModule>
<StudentOnModule>
<MODID>09|24865</MODID>
<MODOUT>2</MODOUT>
<MODSTAT>2</MODSTAT>
</StudentOnModule>
<StudentOnModule>
<MODID>09|24899</MODID>
<MODOUT>4</MODOUT>
<MODSTAT>2</MODSTAT>
</StudentOnModule>
</Instance>
</Student>
<Student>
<BIRTHDTE>1985-05-29</BIRTHDTE>
<ULN>8402398897</ULN>
<Instance>
<NUMHUS>1</NUMHUS>
<OWNINST>1439582|1</OWNINST>
<FUNDCOMP>2</FUNDCOMP>
<StudentOnModule>
<MODID>09|12345</MODID>
<MODOUT>4</MODOUT>
<MODSTAT>2</MODSTAT>
</StudentOnModule>
<StudentOnModule>
<MODID>09|24863</MODID>
<MODOUT>2</MODOUT>
<MODSTAT>2</MODSTAT>
</StudentOnModule>
</Instance>
<Instance>
<NUMHUS>2</NUMHUS>
<OWNINST>1439582|2</OWNINST>
<FUNDCOMP>2</FUNDCOMP>
<StudentOnModule>
<MODID>08|24685</MODID>
<MODOUT>1</MODOUT>
<MODSTAT>2</MODSTAT>
</StudentOnModule>
</Instance>
</Student>
我使用OWNINST更改FUNDCOMP的样式表如下:
<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('ss6_FUNDCOMP.xml')/studentstoamend/STUDENT/OWNINST]/FUNDCOMP">
<xsl:copy-of select="document('ss6_FUNDCOMP.xml')/studentstoamend/STUDENT[OWNINST = current()/../OWNINST]/FUNDCOMP"/>
</xsl:template>
</xsl:stylesheet>
包含新FUNDCOMP值的XML文件示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<studentstoamend>
<STUDENT><OWNINST>1308538|1</OWNINST><FUNDCOMP>2</FUNDCOMP></STUDENT>
<STUDENT><OWNINST>1490044|1</OWNINST><FUNDCOMP>1</FUNDCOMP></STUDENT>
<STUDENT><OWNINST>1522978|2</OWNINST><FUNDCOMP>1</FUNDCOMP></STUDENT>
<STUDENT><OWNINST>903797|2</OWNINST><FUNDCOMP>1</FUNDCOMP></STUDENT>
<STUDENT><OWNINST>1231086|1</OWNINST><FUNDCOMP>1</FUNDCOMP></STUDENT>
</studentstoamend>
非常感谢并且对不正确使用任何术语表示道歉。
亚历