這裏是我的XML:XML的XPath表達式返回兒童具有類似屬性
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Job>
<InvoiceNumber>23456/1.3</InvoiceNumber>
<CompanyName>DummyJobOne</CompanyName>
<CompanyNumber>7641</CompanyNumber>
<Parts>
<Part>
<PartNumber>23456/1</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
<Part>
<PartNumber>23456/2</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
<Part>
<PartNumber>23456/3.2</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
<Part>
<PartNumber>23459/1</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
<Part>
<PartNumber>23459/6</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
</Parts>
<Job>
我想創建一個XPath表達式,將只選擇「部分」,其中/前的「零件號」相匹配的/之前的'發票號碼'。
換句話說,只保留包含23456的「部分」並刪除23459。結果應該是這樣的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Job>
<InvoiceNumber>23456/1.3</InvoiceNumber>
<CompanyName>DummyJobOne</CompanyName>
<CompanyNumber>7641</CompanyNumber>
<Parts>
<Part>
<PartNumber>23456/1</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
<Part>
<PartNumber>23456/2</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
<Part>
<PartNumber>23456/3.2</PartNumber>
<SourceEstimate>41847</SourceEstimate>
</Part>
</Parts>
<Job>
我提前道歉任何不正確的術語或一般滑稽。 謝謝!
您的結果不能夠通過單獨的XPath實現。 XPath供選擇;你需要改造。考慮使用XSLT。 – kjhughes
如果我使用表達式: /Job/Parts/Part [PartNumber =/Job/InvoiceNumber]/PartNumber,我可以將確切的匹配與「發票號」分開。有沒有辦法讓它忽略/以及之後的所有內容? – BobTucker
當然,您可以使用'substring-before()'來幫助您選擇目標'Part'元素,但是單獨使用XPath,您無法在所需結果中顯示的祖先元素的上下文中重新組合所選部分。 – kjhughes