为啥这个 xpath 匹配这个文本节点?
Posted
技术标签:
【中文标题】为啥这个 xpath 匹配这个文本节点?【英文标题】:Why does this xpath match this text node?为什么这个 xpath 匹配这个文本节点? 【发布时间】:2019-01-30 02:32:50 【问题描述】:为什么这个 xpath 来自 dita-ot
"*[contains(@class, ' topic/topic ')]/*[contains(@class, ' topic/title ')]
匹配文本节点“Getting started”?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "http://docs.oasis-open.org/dita/v1.1/OS/dtd/concept.dtd">
<concept id="mobileapp_gs" rev="3">
<title>Getting started</title>
<conbody>
</conbody>
</concept>
问候 联系方式
【问题讨论】:
【参考方案1】:DTD 可以提供默认属性值。此处理发生在应用任何 XPath 表达式之前。您在此处引用的 DTD 有点复杂,但如果我在其上运行身份 XSLT 样式表(获取输入,填写 DTD 中的任何默认值,然后将其复制出来),预处理的输入看起来更像(轻度格式化)
<?xml version="1.0"?>
<concept xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/"
id="mobileapp_gs"
rev="3"
ditaarch:DITAArchVersion="1.1"
domains="(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic indexing-d)"
class="- topic/topic concept/concept ">
<title class="- topic/title ">Getting started</title>
<conbody class="- topic/body concept/conbody ">
</conbody>
</concept>
在这一步之后,<concept />
元素更明显有一个class
属性包含topic/topic
,子元素的class
属性包含topic/title
。
【讨论】:
以上是关于为啥这个 xpath 匹配这个文本节点?的主要内容,如果未能解决你的问题,请参考以下文章