Xpath 在同一查询中选择属性和文本()
我想在一个查询中选择一个属性和一个节点的text()值,例如,我有Xpath 在同一查询中选择属性和文本(),xpath,xpath-2.0,Xpath,Xpath 2.0,我想在一个查询中选择一个属性和一个节点的text()值,例如,我有 <Tag1 @myattr='test'>MyText</Tag1> 失败的原因是,仅允许在节点集上使用联合 有什么想法吗?我认为,给定XPath 2.0,您需要一系列字符串值,这些值可以通过//Tag1/(@myattr,)/string()获得。如果需要单个字符串,请使用//Tag1/string连接((@myattr,),“”) 顺便说一句,您的路径//Tag1/@myattr |//Tag1/t
<Tag1 @myattr='test'>MyText</Tag1>
失败的原因是,仅允许在节点集上使用联合
有什么想法吗?我认为,给定XPath 2.0,您需要一系列字符串值,这些值可以通过
//Tag1/(@myattr,)/string()
获得。如果需要单个字符串,请使用//Tag1/string连接((@myattr,),“”)
顺便说一句,您的路径
//Tag1/@myattr |//Tag1/text()
将选择一个包含属性值和文本节点的序列。我不知道这会如何失败。我使用的是jaxen,查询//Tag1/字符串连接(@myattr,),''由于“预期的节点类型”而失败,查询//Tag1/(@myattr,)/string()由于“预期的其中一个”。,“…”,“@',“*”,“您确定使用支持XPath 2.0的Saxon 9这样的引擎吗?或者您为什么将问题标记为xpath-2.0
?即使使用XPath 1.0,您也应该能够计算路径//Tag1/@myattr |//Tag1/text()
,为您提供一个包含属性节点和文本节点的节点集。我的建议是只支持XPath2.0,实际上Saxen只支持XPath1.0。很抱歉给你带来了困惑。但是,我不明白为什么我的路径//Tag1/@myattr |//Tag1/text()
失败了。也许这是萨克森的内部问题。。。!?什么是“萨克森”?我只知道“Saxon”它的存在形式是Saxon 6.5.5执行XSLT和XPath 1.0,Saxon 9.5执行XSLT和XPath 2.0(以及XQuery 1.0)。如果//Tag1/@myattr |//Tag1/text()
失败,请告诉我们确切的失败消息(如果您需要帮助)以及重现问题的步骤。OMG,我该休息了。。。我写萨克森了吗?我是说贾森。。。。(v1.1.6)。很抱歉
//Tag1/@myattr | //Tag1/text()