我是Web服务/ soap / XML和XSLT的新版本,并且已经接近掌握了它的基础知识,但是当我陷入困境时,我可以真正做一些指导/帮助。
我有一个Web服务,可以将信息提取到响应中(使用SharePoint工作流程)
来自请求的回复 -
<!-- language: XML -->
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetHouseholdByRefResponse xmlns="http://schemas.*****.co.uk/*****/****/**">
<GetHouseholdByRefResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>0</ErrorCode>
<ErrorMessage i:nil="true" />
<Success>true</Success>
<Household>
<UserFieldList />
<CaseWorkerContactName></CaseWorkerContactName>
<CaseWorkerContactTelNo></CaseWorkerContactTelNo>
<CompanyCode>001 </CompanyCode>
<ContactKey>00000</ContactKey>
<CorrespondenceAddress />
<CorrespondenceDesignation></CorrespondenceDesignation>
<CorrespondencePostCodeValue i:nil="true" />
<CorrespondencePreamble></CorrespondencePreamble>
<Description>Joe Bloggs </Description>
<DisplayCompanyCodes></DisplayCompanyCodes>
<EmailAddress></EmailAddress>
<ForwardingAddress />
<ForwardingDesignation></ForwardingDesignation>
<ForwardingPostCodeValue i:nil="true" />
<ForwardingPreamble></ForwardingPreamble>
<Id>000000000</Id>
<IsVulnerable>false</IsVulnerable>
<NextOfKinAddress />
<NextOfKinDesignation></NextOfKinDesignation>
<NextOfKinName></NextOfKinName>
<NextOfKinPhone></NextOfKinPhone>
<NextOfKinPostCodeValue i:nil="true" />
<NextOfKinPreamble></NextOfKinPreamble>
<NumberOfChildren>0</NumberOfChildren>
<PostCodeValue>AB1 C23 </PostCodeValue>
<PropertyReference i:nil="true" />
<Reference>000000000 </Reference>
<ReferralContactName></ReferralContactName>
<ReferralContactTelNo></ReferralContactTelNo>
<Size>1</Size>
</Household>
</GetHouseholdByRefResult>
</GetHouseholdByRefResponse>
</s:Body>
</s:Envelope>
正如你所看到的那样,它返回了很多信息,大多数我都不需要,所有我想做的事情我都会选择某个元素,例如 description
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf- 8" indent="no"/>
<xsl:template match="/">
<xsl:value-of select="Description"/>
</xsl:template>
</xsl:stylesheet>
我什么都没回来,就像没有描述一样。我知道有一个描述,当我测试以下代码时,它将整个结果转换为字符串,这表明我在尝试指定一个元素时遇到了一些XSL语言错误
<xsl:output method="xml" encoding="utf- 8" indent="no"/>
<xsl:template match="/">
<xsl:value-of select="*"/>
</xsl:template>
</xsl:stylesheet>
非常感谢任何帮助
此外,如果有任何人在这个问题上有好处,我很想听听你是否可以推荐任何资源来学习这个。 感谢
答案 0 :(得分:1)
是的,是一个描述,但是(1)它不是/
根节点的子节点,(2)它和它的祖先有名称空间< / em>在解决它们时需要定义和使用,例如:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:x="http://schemas.*****.co.uk/*****/****/**"
exclude-result-prefixes="s x">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:value-of select="s:Envelope/s:Body/x:GetHouseholdByRefResponse/x:GetHouseholdByRefResult/x:Household/x:Description"/>
</output>
</xsl:template>
</xsl:stylesheet>