我有以下XML,我使用XSLT显示所有名字。现在,当我点击第一个名字(在输出中)时,我需要检索整个相应的数据..我该怎么办?如果我点击'Siebel',我的输出应该是Sys Admin,Administrator,0-1,Nva,dga在为它们设置的相应字段中。
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<rpc:ConQueryByExampleResponse
xmlns:rpc="http://siebel.com/asi/">
<SiebelMessage>
<ListOfContactInterfaceMobile
xmlns="http://www.siebel.com/xml/Contact%20Interface%20Mobile">
<Contact>
<FirstName>Siebel</FirstName>
<JobTitle>Sys Admin</JobTitle>
<LastName>Administrator</LastName>
<PersonUId>0-1</PersonUId>
<PersonalContact>Nva</PersonalContact>
<PrimaryOrganization>dga</PrimaryOrganization>
</Contact>
<Contact>
<FirstName>xyz</FirstName>
<JobTitle>Sn</JobTitle>
<LastName>Admin</LastName>
<PersonUId>0-2</PersonUId>
<PersonalContact>Nar</PersonalContact>
<PrimaryOrganization>adfg</PrimaryOrganization>
</Contact>
</ListOfContactInterfaceMobile>
</SiebelMessage>
</rpc:ConQueryByExampleResponse>
</SOAP-ENV:Body>
答案 0 :(得分:0)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:x="http://www.siebel.com/xml/Contact%20Interface%20Mobile">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pFirstName" select="'xyz'"/>
<xsl:template match="/">
<xsl:copy-of select="/*/*/*/*/x:Contact[x:FirstName=$pFirstName]"/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档(更正为命名空间格式良好):
<SOAP-ENV:Body xmlns:SOAP-ENV="blahblahblah">
<rpc:ConQueryByExampleResponse
xmlns:rpc="http://siebel.com/asi/">
<SiebelMessage>
<ListOfContactInterfaceMobile
xmlns="http://www.siebel.com/xml/Contact%20Interface%20Mobile">
<Contact>
<FirstName>Siebel</FirstName>
<JobTitle>Sys Admin</JobTitle>
<LastName>Administrator</LastName>
<PersonUId>0-1</PersonUId>
<PersonalContact>Nva</PersonalContact>
<PrimaryOrganization>dga</PrimaryOrganization>
</Contact>
<Contact>
<FirstName>xyz</FirstName>
<JobTitle>Sn</JobTitle>
<LastName>Admin</LastName>
<PersonUId>0-2</PersonUId>
<PersonalContact>Nar</PersonalContact>
<PrimaryOrganization>adfg</PrimaryOrganization>
</Contact>
</ListOfContactInterfaceMobile>
</SiebelMessage>
</rpc:ConQueryByExampleResponse>
</SOAP-ENV:Body>
生成想要的正确结果:
<Contact xmlns="http://www.siebel.com/xml/Contact%20Interface%20Mobile" xmlns:rpc="http://siebel.com/asi/" xmlns:SOAP-ENV="blahblahblah">
<FirstName>xyz</FirstName>
<JobTitle>Sn</JobTitle>
<LastName>Admin</LastName>
<PersonUId>0-2</PersonUId>
<PersonalContact>Nar</PersonalContact>
<PrimaryOrganization>adfg</PrimaryOrganization>
</Contact>
<强>解释强>:
唯一的模板会复制x:Contact
元素与x:FirstName
子元素,其值与外部提供的参数$pFirstName
中提供的值相同。
x:
前缀是引用默认命名空间中的名称所必需的。