我非常非常 XML,HTML和XSLT。
我正在研究关于XSLT的类的注释,并且xpath上有一个块。笔记说: 以下是使用未缩写语法的位置路径的一些示例: - 孩子::段 - 孩子:: *
还有大约30多个。我不明白这是在说什么。我会输入" child :: para",就像这些关键词,还是我把我的标签作为标签放在我的XML文档中?
我们说我有这个简单的xml文档:
<school>
<university>
<western>purple</western>
<toronto>blue</toronto>
</university>
<highschool>
<northern>red</norther>
<scits>blue</scits>
</highschool>
</school>
我如何选择&#34; purple&#34;例如?我会说school :: child :: para吗?我真的不知道如何使用xpath来获取特定的节点/标签/元素......谢谢!
答案 0 :(得分:2)
我对XML,HTML和XSLT非常陌生。
我正在学习关于XSLT的类的注释,并且在xpath上有一个块。
你得到的笔记显然是粗略的。我想知道问SO是否真的是你最好的学习策略。网上有很多教程,很多书都希望在你的大学图书馆里。我认为你应该做更多的阅读,只有你被困住才来到这里。
答案 1 :(得分:1)
重要的是要知道XPath是一种仍然需要运行它的查询语言,比如XML引擎,类似于SQL( S 被剔除 Q uery L anguage)需要运行SQL服务器。
至于您的问题,可以构建任意数量的查询以从该文档中提取"purple"
。
简单如下:
/school/university/western/text()
然而,只有当我知道这是确切的路径时,这才有效。如果我认为所有western
节点都是“紫色”,我可以在文档中找到所有这些节点。
//western/text()
但是,如果我只想要大学呢?
//university/western/text()
或者我可能想知道哪些分区是“紫色” - 请注意此查询返回“紫色”而不是文本本身的父节点。:
//university//*[text()="purple"]
::
语法用于使用XPath axes(多个轴,而不是ax)。 child::para
表示在当前上下文节点中查找para
元素的子元素。在您的文档中child::para
将找不到任何内容,因为没有para
元素。 school::child::para
也无法正常工作,school::
也不是有效的XPath轴。
这张来自Umbraco的维恩图很好地了解了轴的工作原理:
答案 2 :(得分:1)
你是对的:child::para
不是一个很好的例子,除非你正在查看一个看起来像这样的实际XML文档:
<book>
<chapter>
<para>Lorem ipsum.</para>
<para>Nam interdum.</para>
<para>Cum sociis natoque.</para>
</chapter>
<chapter>
<para>Ut molestie quam.</para>
<para>Duis dapibus.</para>
</chapter>
</book>
只有这样才会发现child
是轴(其名称不依赖于当前处理的文档),而para
是节点< / strong>在处理过的XML中找到(或预期)。
IOW,通用语法是:
axis::node