如何在XML中重用数据

时间:2012-04-17 01:14:48

标签: xml xpath

我想创建一组包含特定值的元素。 然后我想给这个小组命名。最后,我想引用这个小组。 像这样:

<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元素引用已经创建的昂贵的目录组?

1 个答案:

答案 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中。