我有一个用于学校班级学生的数据库应用程序。我在一个包中将大量数据发送到用户界面。为了组装复杂的 XML,我经常需要将多个数据提取为 XML,然后将它们组合起来。
我试图找到一种方法来使用 XSLT 执行类似于 SQL JOIN 的操作。例如,给定以下两个 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>
<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>
我想通过单个 XSLT 运行它们,以生成以下内容:
<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="Rick Robertson" "/>
<Student Name="Joe Jackson"/>
<Student Name="Bob Johnson"/>
</Class>
<Class Name="BIOLOGY101" ClassId="19">
<Student Name="Bob Johnson"/>
<Student Name="Rick Robertson" />
</Class>
</Classes>
</Xml>
请注意,我从 <Student> 节点中省略了 ClassId 属性。
我可以将这两个 XML 文档组合成一个文档以传递给 XSLT,如果这样更容易处理的话。
由于这些数据来自数据库,我将加入不同的 XML 文档。我可能会加入学校的课程,或学生的成绩,或学校的活动。但是它们都将遵循相同的模式:来自子节点的数字属性将对应于父节点中的数字属性。