【发布时间】:2010-10-03 07:40:15
【问题描述】:
您好,这是我的 XML 文件的内容:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mainNode>
<sub time="08:00">
<status id="2">On</status>
<status id="3">Off</status>
</sub>
<sub time="13:00">
<status id="4">On</status>
<status id="7">On</status>
</sub>
<sub time="16:00">
<status id="5">On</status>
<status id="6">On</status>
<status id="7">Off</status>
<status id="8">On</status>
</sub>
<sub time="20:00">
<status id="4">Off</status>
<status id="7">On</status>
</sub>
<sub time="23:59">
<status id="4">On</status>
<status id="7">On</status>
</sub>
</mainNode>
我的程序获取当前时间: 如果我得到 15.59,我必须检索下一个子时间(16.00)的所有状态 id:
<sub time="16:00">
<status id="5">On</status>
<status id="6">On</status>
<status id="7">Off</status>
<status id="8">On</status>
</sub>
通过第二个 XPath 查询,我必须获取上一个子时间 (13.00) 的所有状态 ID。 怎么做?我知道 SQL,但我对 XPath 很陌生。如果有的话,我也接受重要的 XPath 资源的 url。谢谢!
【问题讨论】:
-
您应该说明您的语言平台和 Xpath 版本。 XPath 2.0 将使这更容易,但您可能无法使用。
-
您说的完全正确:我们谈论的是 XPath 2.0。
-
我在回答中提供了两种解决方案:XPath 1.0 和 XPath 2.0。为问题 +1!
-
@vyger 感谢您指出这一点——“代码”按钮中的一些奇怪的错误。 XSLT 2 代码中的索引显示为 7 和 8。刚刚编辑它,如果继续,我将进一步编辑并且不会使用代码按钮。
-
@vyger 请参阅:tinyurl.com/dd4tsy 这是关于 XSLT 的书籍,但它们必须很好地涵盖 XPath。我最喜欢的是 Michael Kay 和他关于 XSLT 2.0 和 XPath 2.0 的最新著作。 BTW,如果你认为和回答是你想要的,你可以选择它(点击复选标记)