我想知道是否有可能在xml文档中解决与其相关的值之间的关系。
假设我们有以下XML文档
<document version="1.4" date="20150427" time="170326">
<timeperiods>
<timeperiod id="TP_1">
<day>1</day>
<period>1</period>
<starttime>0815</starttime>
<endtime>0900</endtime>
</timeperiod>
<timeperiod id="TP_2">
<day>1</day>
<period>2</period>
<starttime>0915</starttime>
<endtime>1000</endtime>
</timeperiod>
<timeperiod id="TP_3">
<day>1</day>
<period>3</period>
<starttime>1015</starttime>
<endtime>1100</endtime>
</timeperiod>
<timeperiod id="TP_4">
<day>1</day>
<period>4</period>
<starttime>1115</starttime>
<endtime>1200</endtime>
</timeperiod>
<timeperiod id="TP_5">
<day>1</day>
<period>5</period>
<starttime>1215</starttime>
<endtime>1300</endtime>
</timeperiod>
<timeperiod id="TP_6">
<day>1</day>
<period>6</period>
<starttime>1315</starttime>
<endtime>1400</endtime>
</timeperiod>
<timeperiod id="TP_7">
<day>1</day>
<period>7</period>
<starttime>1415</starttime>
<endtime>1500</endtime>
</timeperiod>
<timeperiod id="TP_8">
<day>1</day>
<period>8</period>
<starttime>1515</starttime>
<endtime>1600</endtime>
</timeperiod>
<timeperiod id="TP_9">
<day>1</day>
<period>9</period>
<starttime>1615</starttime>
<endtime>1700</endtime>
</timeperiod>
<timeperiod id="TP_10">
<day>1</day>
<period>10</period>
<starttime>1715</starttime>
<endtime>1800</endtime>
</timeperiod>
<timeperiod id="TP_11">
<day>1</day>
<period>11</period>
<starttime>1815</starttime>
<endtime>1900</endtime>
</timeperiod>
</timeperiods>
<lessons>
<lesson id="LS_100">
<periods>28</periods>
<times>
<time>
<assigned_period>1</assigned_period>
</time>
<time>
<assigned_period>2</assigned_period>
</time>
<time>
<assigned_period>1</assigned_period>
</time>
<time>
<assigned_period>3</assigned_period>
</time>
<time>
<assigned_period>5</assigned_period>
</time>
<time>
<assigned_period>10</assigned_period>
</time>
</times>
</lesson>
</lessons>
</document>
是否可以选择任何时间元素并显示相应assigned_period的启动时间?
我试过这样的事情:
document/lessons/lesson/times/time/../../../../timeperiods/timeperiod[period/text() = ./assigned_period/text()]/starttime
仍然没有运气......我不知道我做错了什么。如果我正在评估以下表达式,我会得到以下结果集:
record.XPathEvaluate("//timeperiod")
- &GT;我得到了所有的时间段
record.XPathEvaluate("./assigned_period")
<assigned_period>6</assigned_period>
我得到了当前时间元素的正确assigned_period。
但是,如果我正在尝试执行以下
record.XPathEvaluate("//timeperiod[period = ./assigned_period]")
我收到null。 我也尝试了以下内容:
record.XPathEvaluate("//timeperiod[period/text() = ./assigned_period/text()]")
没有运气。
答案 0 :(得分:0)
我不确定你是否想要这个,但是这样的xpath选择在periodic_period中存在句点的timeperiod标签的开始时间
//timeperiod[period = //assigned_period]/starttime
结果:
Element='<starttime>0815</starttime>'
Element='<starttime>0915</starttime>'
Element='<starttime>1015</starttime>'
Element='<starttime>1215</starttime>'
Element='<starttime>1715</starttime>'