【发布时间】:2011-10-30 08:19:10
【问题描述】:
我有一个源 XML 如下:-
<StudentSet>
<Student>
<StudentName>Kapil</StudentName>
<Subject>English</Subject>
<Subject>History</Subject>
<Subject>Mathematics</Subject>
<Subject>Economics</Subject>
</Student>
<Student>
<StudentName>Atul</StudentName>
<Subject>English</Subject>
<Subject>History</Subject>
<Subject>Economics</Subject>
</Student>
<Student>
<StudentName>Nisha</StudentName>
<Subject>English</Subject>
<Subject>History</Subject>
</Student>
<Student>
<StudentName>Manish</StudentName>
</Student>
</StudentSet>
要应用的规则如下。
1) 如果学生注册了数学,请显示学生姓名和数学
2) 如果学生注册了经济学但未注册数学,请显示学生姓名和经济学
3) 如果学生既没有注册数学和经济学,请选择学生姓名和任何一门科目。
4) 如果学生没有注册任何科目,请不要选择该学生。
我想得到以下输出:-
<StudentSet>
<Student>
<StudentName>Kapil</StudentName>
<Subject>Mathematics</Subject>
</Student>
<Student>
<StudentName>Atul</StudentName>
<Subject>Economics</Subject>
</Student>
<Student>
<StudentName>Nisha</StudentName>
<Subject>English</Subject>
</Student>
</StudentSet>
任何人都可以请帮助 XSLT 可以用于此吗?
【问题讨论】:
-
这是作业吗?这对我来说似乎是一个家庭作业问题。
-
您应该发布您已经拥有的 XSLT 代码...
-
我是 XSLT 的新手。我使用的是完全错误的。我正在使用变量并尝试在 for-each 循环中更改变量的值。谷歌搜索后,我发现无法更改 xslt 中变量的值。所以那个不是什么好东西。
-
好问题,+1。请参阅我的答案以获得更好的解决方案,该解决方案允许将优先主题作为参数传递。此外,随着优先主题列表的增加,转换的复杂性和模板数量不会增加。 :) 您还可以轻松解决类似的问题:“显示优先列表中的前两个主题”。
标签: xslt