1

我想创建一组包含某些值的元素。然后我想命名这个组。最后,我想推荐这个小组。像这样的东西:

<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 元素引用已经创建的昂贵目录组,而不是用每个 person 元素重复昂贵的目录?

4

1 回答 1

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

于 2012-04-17T11:44:17.020 回答