【问题标题】:transforming XML to XSL issue将 XML 转换为 XSL 问题
【发布时间】:2014-08-11 01:58:15
【问题描述】:

我是 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>

任何帮助将不胜感激

另外,如果有任何人对这个主题有很好的了解,我很想听听你是否可以推荐任何学习这个的资源。 谢谢

【问题讨论】:

    标签: xml web-services xslt soap


    【解决方案1】:

    是的,一个描述,但是 (1) 它不是 / 根节点的子节点,并且 (2) 它和它的祖先有 命名空间 在处理它们时需要定义和使用,例如:

    <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>
    

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2011-03-15
      • 2019-03-22
      • 2022-01-07
      相关资源
      最近更新 更多