我正在使用基于标头中的子类型的映射来转换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如下所示:
使用双斜杠选择元素有效,但我宁愿避免使用它,因为可能存在重复的命名元素。
在选择节点时,有没有办法显示您当前在源架构中的位置?我不确定正确的道路是什么。
答案 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看起来也可能无法提取任何内容乍一看是正确的。