最新考研英语词汇xml_在XML词汇表中使用内部引用

最新考研英语词汇xml

传统数据库专家对XML的最大批评之一是事实,即其层次结构性质会鼓励通过关系规范化来消除这种重复性。 这无疑是一个正确的抱怨,而XML成功的关键在于其灵活性和便利性胜过这种失败。 (当然,数据库纯粹主义者说XML的优势似乎比不那么严格要胜于它的问题。)在本文中,我提供了一些技巧,在某些情况下可以提供帮助。 但是,它不是XML层次结构限制问题的通用解决方案。

宁兴市粘贴

有时,当可以重用数据时会出现重复数据,但是不需要重用。 一个很好的例子是业务伙伴的帐单和送货地址。 清单1是包含此类地址的样本客户记录。

清单1.客户记录样本
<customer>
  <name>Bards, Inc.</name>
  <billing-address>1000 Lay Way, Burgh, UK</billing-address>
  <shipping-address>1000 Lay Way, Burgh, UK</shipping-address>
  <phone>606-217-8899</phone>
  <email>bards@angles.co.uk</email>
</customer>

在这种情况下, billing-addressshipping-address是相同的字符串。 想象一下,该文件是填写表格的结果。 即使数据具有相同的值,也可以将其输入两个单独的字段中-这是数据不一致错误的众所周知的配方。 因此,许多此类表格都提供了一个复选框,因此您可以仅输入账单地址,然后将送货地址与账单地址自动匹配。 如果词汇表允许,则可以在XML数据中执行相同的操作。 XML 1.0通过使用ID类型使之成为可能。 清单2提供了一个示例。

清单2.使用ID类型来避免重复的客户记录格式
<!DOCTYPE customer [
  <!ELEMENT customer (name, billing-address, shipping-address,
                      phone, email
  )>
  <!ELEMENT billing-address (#PCDATA)>
  <!ATTLIST billing-address id ID #IMPLIED>
  <!ELEMENT shipping-address (#PCDATA)>
  <!ATTLIST shipping-address ref IDREF #IMPLIED>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT phone (#PCDATA)>
  <!ELEMENT email (#PCDATA)>
]>
<customer>
  <name>Bards, Inc.</name>
  <billing-address id="x">1000 Lay Way, Burgh, UK</billing-address>
  <shipping-address ref="x"/>
  <phone>606-217-8899</phone>
  <email>bards@angles.co.uk</email>
</customer>

在这种情况下,通过允许billing-address元素具有可选的属性id来扩充词汇表,该属性被定义为唯一的ID类型。 shipping-address元素还获得一个可选属性ref ,该属性定义为对唯一ID类型的引用。 出于本示例的目的,我将声明这些属性类型所需的DTD放入了内部子集。 然后,处理代码需要知道如何处理特殊属性,并正确推断送货地址的值。

另一种方法是使用XPath引用目标值,如清单3所示

清单3.使用XPath避免重复的客户记录格式
<customer>
  <name>Bards, Inc.</name>
  <billing-address>1000 Lay Way, Burgh, UK</billing-address>
  <shipping-address>
    <xpath-ref select="../billing-address"/>
  </shipping-address>
  <phone>606-217-8899</phone>
  <email>bards@angles.co.uk</email>
</customer>

这次,我在词汇表中添加了一个特殊元素xpath-ref ,其中包含一个XPath表达式,该表达式将以其父元素作为上下文节点进行求值。 在此示例中,它选择文档的billing-address元素元素节点名,然后将其转换为字符串。 再次,处理器将必须实现此引用,但是此XPath方法提供了更大的灵活性。 一方面,可以使用XPath函数和其他表达式工具来选择更复杂的值。

结语

您应谨慎使用此类内部引用。 使用ID方法,请确保维护文档的有效性;使用XPath方法,请注意修改导致XPath无法选择预期结果的情况。

设计XML词汇表时,请尽可能尝试减少重复。 您可以通过多种方式进行操作,内部引用可以成为一种便捷的工具。


翻译自: https://www.ibm.com/developerworks/xml/library/x-tipvocab/index.html

最新考研英语词汇xml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值