分类:
编程软件 Java 中间件 Elasticsearch 前端开发 kafka 云计算大数据 Lua zookeeper PHP 网络与运维 项目构建管理 ActiveMQ 办公应用软件 Memcached RabbitMQ Sentinel Nacos

XPointer 实例

2019-05-08 23:22|来源: 网路

让我们通过研究一个实例来学习一些基础的 XPointer 语法。


XPointer 实例

在本例中,我们会为您展示如何使用 XPointer 并结合 XLink 来指向另外一个文档的某个具体的部分。

我们将通过研究目标 XML 文档开始(即我们要链接的那个文档)。


目标XML文档

目标XML文档名为 "dogbreeds.xml",它列出了一些不同的狗种类:

<?xml version="1.0" encoding="ISO-8859-1"?>

<dogbreeds>

<dog breed="Rottweiler" id="Rottweiler">
  <picture url="http://dog.com/rottweiler.gif" />
  <history>The Rottweiler's ancestors were probably Roman
  drover dogs.....</history>
  <temperament>Confident, bold, alert and imposing, the Rottweiler
  is a popular choice for its ability to protect....</temperament>
</dog>

<dog breed="FCRetriever" id="FCRetriever">
  <picture url="http://dog.com/fcretriever.gif" />
  <history>One of the earliest uses of retrieving dogs was to
  help fishermen retrieve fish from the water....</history>
  <temperament>The flat-coated retriever is a sweet, exuberant,
  lively dog that loves to play and retrieve....</temperament>
</dog>

</dogbreeds>


在您的浏览器查看 "dogbreeds.xml" 文件。

注意上面的 XML 文档在每个我们需要链接的元素上使用了 id 属性!


XML 链接文档

不止能够链接到整个文档(当使用 XLink 时),XPointer 允许您链接到文档的特定部分。如需链接到页面的某个具体的部分,请在 xlink:href 属性中的 URL 后添加一个井号 (#) 以及一个 XPointer 表达式。

表达式:#xpointer(id("Rottweiler")) 可引用目标文档中 id 值为 "Rottweiler" 的元素。

因此,xlink:href 属性会类似这样:xlink:href="http://dog.com/dogbreeds.xml#xpointer(id('Rottweiler'))"

不过,当使用 id 链接到某个元素时,XPointer 允许简写形式。您可以直接使用 id 的值,就像这样:xlink:href="http://dog.com/dogbreeds.xml#Rottweiler"

下面的 XML 文档可引用每条狗的品种信息,均通过 XLink 和 XPointer 来引用:

<?xml version="1.0" encoding="ISO-8859-1"?>

<mydogs xmlns:xlink="http://www.w3.org/1999/xlink">

<mydog xlink:type="simple"
  xlink:href="http://dog.com/dogbreeds.xml#Rottweiler">
  <description xlink:type="simple"
  xlink:href="http://myweb.com/mydogs/anton.gif">
  Anton is my favorite dog. He has won a lot of.....
  </description>
</mydog>

<mydog xlink:type="simple"
  xlink:href="http://dog.com/dogbreeds.xml#FCRetriever">
  <description xlink:type="simple"
  xlink:href="http://myweb.com/mydogs/pluto.gif">
  Pluto is the sweetest dog on earth......
  </description>
</mydog>

</mydogs>


相关问答

更多

使用xpointer()方案支持XPointer的Java库?(Java library supporting XPointer with the xpointer() scheme?)

对于xerces,我在一个GSoc项目下实现了XPointer xpointer()方案。但是这种支持需要进一步改进才能使用。我认为没有其他支持.Xerces可能在将来支持这一点。 For the xerces I implemented the XPointer xpointer() scheme under a GSoc project.But that support needs to be improved further in order to be available.I think

使用Python ElementTree / ElementInclude和xpointer访问包含的XML文件(Using Python ElementTree/ElementInclude and xpointer to access included XML files)

ElementInclude不支持所有XInclude。 忽略<include>元素上的xpointer属性。 它使用lxml和xinclude()方法以你想要的方式工作: from lxml import etree tree = etree.parse('main.xml') tree.xinclude() print etree.tostring(tree) 请注意,XPointer xpointer()方案从未达到W3C建议书的状态(它仍然只是一个工作草案)。 它已经在libxml

XPointer范围的重点是什么(无双关语)?(What's the point (no-pun) of XPointer ranges?)

实际上,我从未使用过这个。 但是当我使用XSLT时,我经常发现自己需要一种表达范围的方法(即“从xpathX到xpathY选择所有节点”)和一些取决于结构的方法,这很难做到这一点。 就像我说的,我不使用它,但如果我可以在我的项目中应用XPointer,如果实现了这个功能,我会使用它。 你问它有用的是什么。 一个简单的例子:考虑一个日志文件。 您可以简单地请求从X点到Y的范围(即日期范围),这比使用XPath的经典方法要容易得多。 即,表达更容易,更清晰。 I have never used th

XPath,XQuery和XPointer之间的区别(Difference between XPath, XQuery and XPointer)

维基百科是开始这样的问题的好地方。 通常, XPath是用于简洁地查找DOM中精确XML节点的语言。 XQuery是XPath的超集,也提供FLWOR语法,它是类似SQL的。 最后, XPointer包括XPath,还提供了一种更简单的基于位置的寻址方案。 当然,您可以随时阅读W3C规范的详细信息。 Wikipedia is a good place to start for questions like this. Generally, XPath is a language used to

是否有一种“标准”方式来验证xpointers?(Is there a “standard” way to validate xpointers?)

XSLT并不直接支持XPointers的验证,但您可能会发现Lea Hayes的XPointer Framework for XSLT 2.0很有帮助。 XSLT does not directly support validation of XPointers, but you may find Lea Hayes' XPointer Framework for XSLT 2.0 to be helpful.