【发布时间】:2022-01-11 23:39:54
【问题描述】:
我构建了一些 xml 文件并声明了一个 DTD。
这是声明了 dtd 的 xml 文件:
现在,我想使用 xpath 语法。
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE farms[
<!ELEMENT farms (farm+,worker+)>
<!ELEMENT farm (name, manager*, product+)>
<!ELEMENT product (name, type, cost)>
<!ELEMENT worker (name, phone)>
<!ELEMENT manager (name, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT cost (#PCDATA)>
<!ATTLIST farm
fid ID #REQUIRED
address CDATA #REQUIRED>
<!ATTLIST product
pid ID #REQUIRED>
<!ATTLIST worker
mid IDREF #IMPLIED
fid IDREF #REQUIRED>
<!ATTLIST manager
mid ID #REQUIRED>
]>
<farms>
<farm fid = "1" address="beer-sheva">
<name>Neve Noy</name>
<manager mid="2">
<name> RONI </name>
<phone>0545555572</phone>
</manager>
<manager mid = "3">
<name> DANI </name>
<phone>0545555542</phone>
</manager>
<product pid="4">
<name>Olive Oil</name>
<type>oil</type>
<coast>700</coast>
</product>
</farm>
<farm fid="5" address="beer-sheva">
<manager mid="6">
<name> Yossi </name>
<phone>0545555422</phone>
</manager>
<manager mid="9">
<name> Ron </name>
<phone>0545553222</phone>
</manager>
<product pid="8">
<name>Olive Oil</name>
<type>oil</type>
<coast>700</coast>
</product>
</farm>
<worker mid = "2" fid = "1">
<name> RONI </name>
<phone> 0545555572</phone>
</worker>
<worker mid = "3" fid = "1">
<name> Dani </name>
<phone>0545555572</phone>
</worker>
<worker fid="1">
<name> Matan </name>
<phone>05432323422</phone>
</worker>
//Worker than work in fram 5
<worker mid="6" fid ="5">
<name> Yossi </name>
<phone>0545555422</phone>
</worker>
<worker mid="9" fid ="5">
<name> Ron </name>
<phone>0545553222</phone>
</worker>
<worker fid="5">
<name> Haim </name>
<phone>05432323422</phone>
</worker>
</farms>
所以我尝试在 xpath 中使用 ID 和 idref,但是当我尝试这样做时:
//worker/id(fid)[@fid = "1"]/manager/name/text()
它不承认@fid 它是一个键 这是我第一次使用 xml 和 dtd,所以也许我没有声明好。
【问题讨论】:
-
这是我第一次在世界上使用 xml 和 dtd 我正在尝试做的是学习如何在 xpath 上使用语法,看看哪些元素会回到我身边 现在我想玩使用 id 和 idref 就像没有认识到我在元素中有键
-
所以您要查找特定员工的经理姓名?
-
嗯,我试着找到所有在农场工作的工人,他们生产橄榄油,而不是由 Yossi 经理管理! @OldProgrammer
-
我也尝试了解如何在 xpath 中使用 id 和 idref ... @OldProgrammer
-
我可以从工人那里去农场吗? @OldProgrammer