1

我正在做一些 XSLT - 在一种情况下,我有一个序列化为 XML 文件的服务,而我的 XSLT 会提取它。在另一种情况下,我有一个网络服务序列化相同的对象。据我所知,输出是相同的。但是 XML 文件的 XQuery/XPath 不适用于 XML REST 服务。

例如,看这张图片,它显示了我从两个来源加载文档并为每个来源评估相同的路径。

在此处输入图像描述

这些有什么不同?为什么他们的评价不一样?

更新

来自文件的 XML:

  <?xml version="1.0" encoding="utf-8"?>
<ArrayOfBusinessGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <BusinessGroup>
    <ListofSkills>
      <SkillClass>
        <SkillName>DTE</SkillName>
        <InteractionCount>0</InteractionCount>
      </SkillClass>
      <SkillClass>
        <SkillName>FIN</SkillName>
        <InteractionCount>0</InteractionCount>
      </SkillClass>
      <SkillClass>
        <SkillName>DPS</SkillName>
        <InteractionCount>0</InteractionCount>
      </SkillClass>
      <SkillClass>
        <SkillName>PPD Apps</SkillName>
        <InteractionCount>0</InteractionCount>
      </SkillClass>
      <SkillClass>
        <SkillName>FHD New</SkillName>
        <InteractionCount>0</InteractionCount>
      </SkillClass>
      <SkillClass>
        <SkillName>FHD Existing</SkillName>
        <InteractionCount>0</InteractionCount>
      </SkillClass>
    </ListofSkills>
    <GroupName>Apps Chat</GroupName>
  </BusinessGroup>

来自 Web 服务的 XML:

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ArrayOfBusinessGroup xmlns="http://schemas.datacontract.org/2004/07/ININ.WCF.DeloitteSIC.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<BusinessGroup>
<GroupName>Apps Chat</GroupName>
<ListofSkills>
<SkillClass>
<InteractionCount>2</InteractionCount>
<SkillName>DTE</SkillName>
</SkillClass>
<SkillClass>
<InteractionCount>0</InteractionCount>
<SkillName>FIN</SkillName>
</SkillClass>
<SkillClass>
<InteractionCount>0</InteractionCount>
<SkillName>DPS</SkillName>
</SkillClass>
<SkillClass>
<InteractionCount>0</InteractionCount>
<SkillName>PPD Apps</SkillName>
</SkillClass>
<SkillClass>
<InteractionCount>0</InteractionCount>
<SkillName>FHD New</SkillName>
</SkillClass>
<SkillClass>
<InteractionCount>0</InteractionCount>
<SkillName>FHD Existing</SkillName>
</SkillClass>
</ListofSkills>
</BusinessGroup>
4

1 回答 1

1

这里的问题是从 web 服务返回的 XML 使用命名空间,但您的 XPath 不是。要正确使用命名空间,您将:

在 XSLT 顶部(在 xsl:stylesheet 标记中)声明名称空间:

xmlns:dc="http://schemas.datacontract.org/2004/07/ININ.WCF.DeloitteSIC.Models"

然后,您可以使用声明的前缀为名称添加前缀,而不是仅通过它们的名称来引用元素:

$skillFile/dc:ArrayOfBusinessGroup/*[starts-with(dc:GroupName, $groupName)]
于 2013-08-12T16:52:07.663 回答