我想创建一组包含特定值的元素。 然后我想给这个小组命名。最后,我想引用这个小组。 像这样:
<catalog type="expensive">
<powder>25</powder>
<cream>110</cream>
</catalog>
<catalog type="normal">
<powder>5</powder>
<cream>45</cream>
</catalog>
<person>
<name>Jim</name>
<catalog type="expensive">
<powder>25</powder>
<cream>110</cream>
</catalog>
</person>
有没有一种方法可以让person元素引用已经创建的昂贵的目录组?
答案 0 :(得分:3)
简短的回答是你已经在你的例子中做过了 - 如果type
唯一地标识了目录,你可以这样写:
<person>
<name>Jim</name>
<catalogRef type="expensive" />
</person>
你完成了 - 你需要的信息就在那里。如果type
不唯一,您可以添加另一个唯一属性来标识每个目录(通常为id
)。
更长的答案需要一些关于如何处理和使用此XML的详细信息 - 如果您想使用XSLT以某种方式对其进行转换,那么上述方法很好 - 您可以使用类似的方式访问每个人的目录这样:
<xsl:variable name="catalogType" select="catalogRef/@type" />
<xsl:variable name="catalog" select="/*/catalog[@type=$catalogType]" />
假设当前节点是person元素,并且所有目录定义都位于根目录下的同一XML中。