【问题标题】:xslt 2.0 : Unable to select multiple values from xmlxslt 2.0:无法从 xml 中选择多个值
【发布时间】:2019-09-20 12:48:34
【问题描述】:

我有一个传入的大型 XML 2 段

第一段。原始数据作为一个片段 第 2 段。应该传递的数据在第二个。

我正在第二个循环中运行一个循环,并检查第 2 个段中 FIeld1 的值是否存在于第一个段中。

问题:第 1 段针对第 2 段中的 Field1 有多个返回,但存储为 1 个字段,我无法将它们分隔为字段。

以下是针对整个第 1 段的第 2 段中的 Field1 运行时的代码,产生 2 个结果并将它们存储为一个字段值。我希望它们显示为单独的 XML 字段。

注意:当有 1 次命中时,这可以正常工作。

<xsl:variable name="CheckEmployeeExists">
<xsl:value-of select="../../PerEmail/PerEmail/emailAddress[personIdExternal=$EmpNumber]" />
</xsl:variable>

如何生成多个整数的值的示例

<Personidexternal xmlns:xs="http://www.w3.org/2001/XMLSchema">801035 801035</Personidexternal>

我想要的是这样的

<Personidexternal>801035</Personidexternal>
<Personidexternal>801035</Personidexternal>

以下是针对整个第 1 段的第 2 段中的 Field1 运行时的代码,产生 2 个结果并将它们存储为一个字段值。我希望它们显示为单独的 XML 字段。

注意:当有 1 次命中时,这可以正常工作。

<xsl:variable name="CheckEmployeeExists">
<xsl:value-of select="../../PerEmail/PerEmail/emailAddress[personIdExternal=$EmpNumber]" />
</xsl:variable>

如何生成多个整数的值的示例

<Personidexternal xmlns:xs="http://www.w3.org/2001/XMLSchema">801035 801035</Personidexternal>

我想要的是这样的

<Personidexternal>801035</Personidexternal>
<Personidexternal>801035</Personidexternal>

【问题讨论】:

标签: xml xslt


【解决方案1】:

这个结构有点代码味道:

<xsl:variable name="CheckEmployeeExists">
<xsl:value-of select="../../PerEmail/PerEmail/emailAddress
     [personIdExternal=$EmpNumber]" />
</xsl:variable>

它使用单个文本节点构造一个文档节点,其值是由“select”表达式选择的节点的字符串值的串联(这正是您所看到的)。

通常当人们写这个时,最好写:

<xsl:variable name="CheckEmployeeExists"
select="../../PerEmail/PerEmail/emailAddress
     [personIdExternal=$EmpNumber]" />

我无法判断您的情况是否如此,因为我们看不到使用该变量的代码,并且变量名的选择非常无用。

如果不查看更多代码,无法告诉您如何更正代码;但这是一个猜测:

<xsl:copy-of
  select="../../PerEmail/PerEmail/emailAddress/personIdExternal[.=$EmpNumber]">

请记住:

(a) 在 XSLT 2.0 中声明变量的类型总是一个好主意:它确立了作者、读者和编译器都在同一张赞美诗表上。

(b) 使用xsl:value-of 通常是一个错误,尤其是当它是xsl:variablexsl:function 中的唯一指令时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多