xml - XSLT for-each 无法提取值
问题描述
我正在尝试使用 xslt 将 xml 转换为所需的 xml。但我无法正确使用 for - each 并且值返回 null。任何人都可以帮助进行 xslt 转换。
这是 我正在使用的 XSLT
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<INB>
<SEG>
<TRN>RAN</TRN>
<VER>8.3</VER>
<WHS>699</WHS>
<xsl:for-each select="message/Lines">
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<xsl:if test="not(normalize-space(message/Lines/Nbr)) = ''">
<NUM>
<xsl:value-of select="normalize-space(message/Lines/Nbr)"/>
</NUM>
</xsl:if>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
</xsl:for-each>
</SEG>
</INB>
</xsl:template>
</xsl:stylesheet>
这是输入 XML:
<message>
<PoNbr>451617926</PoNbr>
<whCode/>
<unitCode/>
<dnrbTime/>
<Lines>
<Nbr>451617926</Nbr>
</Lines>
<Lines>
<Nbr>2</Nbr>
</Lines>
</message>
下面是它返回的输出
在它返回的以下输出中,没有使用 for each 语句映射的 Nbr。
输出:
<INB>
<SEG>
<TRN>RAN</TRN>
<VER>8.3</VER>
<WHS>699</WHS>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM/>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM/>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
</SEG>
</INB>
预期输出:
<INB>
<SEG>
<TRN>RAN</TRN>
<VER>8.3</VER>
<WHS>699</WHS>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM>451617926</NUM>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
<LINE>
<SENAM>LINE_SEG</SENAM>
<INVSLN>0</INVSLN>
<EXPQTY>0</EXPQTY>
<NUM>2</NUM>
<STS>A</STS>
<PRT>----</PRT>
</LINE>
</SEG>
</INB>
解决方案
仅更改以下代码
<xsl:if test="not(normalize-space(message/Lines/Nbr)) = ''">
改成
<xsl:if test="not(normalize-space(message/Lines/Nbr)='')">
推荐阅读
- ios - 在 UIViewContriller Swift 5 中的 func viewDidLoad() 之后运行 UIAlertController
- javascript - 在 Divs 后面绘制重复图像
- html-table - 如何生成这个 teradata 表?
- c# - 为什么我得到空值或索引超出范围?
- ios - iOS Swift UIImage 调整大小影响性能的问题;调整大小时出现意外尺寸
- sql-server - 从包含 int 数组的字段中查找记录的最佳方法是什么?顺便说一句,查询参数也是一个 int 数组
- ios - Xcode、Swift 上的 FBSDK OAuth 错误 - 调用了应用程序 ID“新应用程序 ID”的图形 API,但令牌具有应用程序 ID“旧应用程序 ID”
- azure - 通过 Logic App 和 Azure Function 将 JSON 发送到 RESTful API
- vue.js - vuexfire 反应性有问题吗?
- python - 熊猫数据框:对齐