【问题标题】:xpath relative path does not bring back any valuexpath 相对路径不带回任何值
【发布时间】:2014-12-22 19:29:12
【问题描述】:

这是 SVG 文件的一部分

<g transform="translate(113.63-359.13)">
    <use fill="#f00" xlink:href="#D"/>
    <g transform="translate(72.59-8.504)">
        <use xlink:href="#E"/>
        <path fill="#f00" stroke="#000" stroke-linejoin="round" stroke-linecap="round" stroke-width=".24" d="m6.04 526.26h19.843v4.961h-19.843z"/>
        <use xlink:href="#F"/>
    </g>
    <text x="20.41" y="527.6" fill="#000" font-family="Arial" font-size="8">Out</text>
</g>

找到具有 Text = Out 的特定 g 节点,它可以使用

svg/g/text[text()="Out"]

但使用此相对路径时我没有得到 #f00

/svg/g/text[text()="Out"]./use/@fill

谁能告诉我问题是什么以及如何找到与“Out”相关的填充值?

仅供参考,我正在尝试编写一个 XSL 来更改 svg 文件中某些对象的颜色。如果您对该主题有任何其他内容,那就太好了

谢谢

【问题讨论】:

  • /svg/g/text[text()="Out"]./use/@fill 不是相对路径,它是非法的 XPath 表达式(点),您应该会收到错误消息。另外,即使去掉点,它也不是相对路径,而是绝对路径,从根开始。

标签: xpath svg


【解决方案1】:

假设您的 XML 在当前 g 元素上方确实有一个名为 svg 的根元素,那么您要查找的表达式是这个......

/svg/g/text[text()="Out"]/../use/@fill

或者更好的是,这样做......

/svg/g[text/text()="Out"]/use/@fill

【讨论】:

  • 你的假设是绝对正确的,我不敢相信我试过了......工作得很好,谢谢!
  • @user3732793 如果蒂姆回答了您的问题,请accept his answer。这是解决 Stackoverflow 问题的标准方法。
  • /text() 可以删除:/svg/g[text="Out"]/use/@fill
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 2023-04-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多