选择字段元素时,不确定XSLT文档中的当前路径

时间:2018-03-13 08:46:59

标签: xml xslt xpath biztalk

我正在使用基于标头中的子类型的映射来转换XML文件。

为了使这个逻辑发生,我使用了一个xsl:if在一个模板中,它在根节点上匹配。

<xsl:template match="/">
  <xsl:variable name="var:invoiceSubtype" select="//Header/InvoiceType/text()"></xsl:variable>
  <xsl:if test="$var:invoiceSubtype = 'Invoice'">

在xsl中:如果我已经粘贴了地图的XSLT代码,而没有更改xpath,但是我的一些元素没有显示任何数据,如下所示:

<BELNR>
   <xsl:value-of select="/Header/InvoiceNumber/text()" />
</BELNR>

我的架构结构直到InvoiceType如下所示:

enter image description here

使用双斜杠选择元素有效,但我宁愿避免使用它,因为可能存在重复的命名元素。

在选择节点时,有没有办法显示您当前在源架构中的位置?我不确定正确的道路是什么。

1 个答案:

答案 0 :(得分:1)

您可以从根目录开始更改为完整XPATH以避免使用//Header/InvoiceType/text(),而是使用:/CDM_PurchaseInvoice/Header/InvoiceType/text()

此外,如果您使用的是命名空间,则应在xpath中或使用语法/x:List/x:Fields/x:Fiels/*[name()='List']/*[name()='Fields']/*[name()='Field']将其考虑在内,否则即使xpath看起来也可能无法提取任何内容乍一看是正确的。

请参阅:Xml Namespace breaking my xpath!