当我这么做
account[@id=15]我得到了
<?xml version="1.0" encoding="utf-8"?>
<root>
<account id="15" first_name="Sandra" last_name="Schlichting">
<private_address address_id="19" />
<profile_employee fk_id="15">
<date_created>2011-1-2T1:1:00</date_created>
<address building="3" room="2" floor="1" />
</profile_employee>
<profile_student fk_id="15">
<address address_id="19" />
</profile_student>
<profile_student fk_id="15">
<address address_id="45" />
</profile_student>
</account>
</root>但是我只想输出
有人能想出怎么做吗?
更新:
这些命令起作用
account[@id=15]/profile_employee
account[@id=15]/profile_employee/address但是输出整个元素,而不仅仅是属性空间和建筑物。
发布于 2011-02-11 17:33:02
虽然@Flack的答案是正确的,但是可以使用一个XPath表达式:生成想要的结果
concat('
', /*/account[@id=15]/@first_name,
' ', /*/account[@id=15]/@last_name,
' : ', /*/account[@id=15]/profile_employee/address/@building,
'/', /*/account[@id=15]/profile_employee/address/@room
)当在所提供的XML文档上计算此XPath表达式时,
<root>
<account id="15" first_name="Sandra" last_name="Schlichting">
<private_address address_id="19" />
<profile_employee fk_id="15">
<date_created>2011-1-2T1:1:00</date_created>
<address building="3" room="2" floor="1" />
</profile_employee>
<profile_student fk_id="15">
<address address_id="19" />
</profile_student>
<profile_student fk_id="15">
<address address_id="45" />
</profile_student>
</account>
</root>想要的,正确的结果产生:
Sandra Schlichting : 3/2发布于 2011-02-11 11:25:30
你需要:
/root/account[@id=15]/@first_name
/root/account[@id=15]/@last_name
/root/account[@id=15]/profile_employee/address/@building
/root/account[@id=15]/profile_employee/address/@room如果在XSLT中对照样本进行测试,结果将是(为清晰起见的换行符):
Sandra
Schlichting
3
2https://stackoverflow.com/questions/4967819
复制相似问题