for-loop - XSLT 中的嵌套 for 循环
问题描述
问题:嵌套的 for-each 在 XML 的 PLAN_ENROLLED_INFO 级别不起作用,从 PLAN_ENROLLED_INFO 这个级别的 XML 元素正在复制而不是循环中的新值。来自 IO_DEVICE_INFO_ITEM 级别的 XML 元素正在循环,但内部循环元素正在重复
XML:
<IO_DEVICE_INFO_ITEM>
<ESN>260730008835603</ESN>
<CARRIER_NAME>ATT</CARRIER_NAME>
<SERVICE_END_DATE>2020-10-10T00:00:00.000-04:00</SERVICE_END_DATE>
<PLAN_ENROLLED_INFO>
<PLAN_ENROLLED_INFO_ITEM>
<PLANID>5803843</PLANID>
<PLAN_NAME>CES Data Club Annual Service - B2B</PLAN_NAME>
<PLAN_DESCRIPTION>CES $50 Data Club Annual - AUTO REFILL</PLAN_DESCRIPTION>
<PLAN_TYPE>DATA_CLUB</PLAN_TYPE>
</PLAN_ENROLLED_INFO_ITEM>
<PLAN_ENROLLED_INFO_ITEM>
<PLANID>5803842</PLANID>
<PLAN_NAME>CES Data Club LowBalance 1GB - B2B</PLAN_NAME>
<PLAN_DESCRIPTION>CES $10 Data Club Low Balance</PLAN_DESCRIPTION>
<PLAN_TYPE>DATA_CLUB_LOWBALANCE</PLAN_TYPE>
<AUTO_REFILL_MAX_LIMIT>999</AUTO_REFILL_MAX_LIMIT>
</PLAN_ENROLLED_INFO_ITEM>
</PLAN_ENROLLED_INFO>
</IO_DEVICE_INFO_ITEM>
<IO_DEVICE_INFO_ITEM>
<ESN>260730008789875</ESN>
<SERVICE_END_DATE>2019-11-08T00:00:00.000-05:00</SERVICE_END_DATE>
<PLAN_ENROLLED_INFO>
<PLAN_ENROLLED_INFO_ITEM>
<PLANID>5804297</PLANID>
<PLAN_NAME>UNLIMITED 20 GB ILD 30-DAY PLAN CES- B2B</PLAN_NAME>
<PLAN_DESCRIPTION> Unlimited Talk, Text and Data (20 GB Data @ 4G speed) + ILD /30 Days AUTO REFILL</PLAN_DESCRIPTION>
<PLAN_TYPE>BASE_PLAN</PLAN_TYPE>
<NEXT_CHARGE_DATE>2019-11-08T12:06:08.000-05:00</NEXT_CHARGE_DATE>
</PLAN_ENROLLED_INFO_ITEM>
<PLAN_ENROLLED_INFO_ITEM>
<PLANID>5804312</PLANID>
<PLAN_NAME> $10 ILD B2B</PLAN_NAME>
<PLAN_DESCRIPTION> $10 ILD - Auto Refill on Low Balance</PLAN_DESCRIPTION>
<PLAN_TYPE>ILD</PLAN_TYPE>
<BANK_ACCNT_NO xsi:nil="true"/>
</PLAN_ENROLLED_INFO_ITEM>
</PLAN_ENROLLED_INFO>
</IO_DEVICE_INFO_ITEM>
带有嵌套 for-each 的 XSLT 转换,在下面需要帮助
<xsl:for-each select="/ns0:OutputParameters/ns0:IO_DEVICE_INFO/ns0:IO_DEVICE_INFO_ITEM">
<tns:accountDevice>
<tns:esn>
<xsl:value-of select="ns0:ESN"/>
</tns:esn>
<tns:enrollments>
<xsl:for-each select="ns0:PLAN_ENROLLED_INFO/ns0:PLAN_ENROLLED_INFO_ITEM">
<tns:enrollment>
<tns:enrolledPlanId>
<xsl:value-of select="/ns0:OutputParameters/ns0:IO_DEVICE_INFO/ns0:IO_DEVICE_INFO_ITEM/ns0:PLAN_ENROLLED_INFO/ns0:PLAN_ENROLLED_INFO_ITEM/ns0:PLANID"/>
</tns:enrolledPlanId>
<tns:type>AUTO_REFILL</tns:type>
<tns:name>DATA_LOW_BALANCE</tns:name>
<tns:characteristics>
<tns:characteristic>
<tns:name>PLAN_NAME</tns:name>
<tns:value>
<xsl:value-of select="/ns0:OutputParameters/ns0:IO_DEVICE_INFO/ns0:IO_DEVICE_INFO_ITEM/ns0:PLAN_ENROLLED_INFO/ns0:PLAN_ENROLLED_INFO_ITEM/ns0:PLAN_NAME"/>
</tns:value>
</tns:characteristics>
</tns:enrollment>
</xsl:for-each>
</tns:enrollments>
</tns:accountDevice>
</xsl:for-each>
解决方案
推荐阅读
- c - 如何将结构中的变量从整数更改为字符串?
- c++ - C++20-ranges:重用过滤视图
- python - OpenPyXL - 是否可以将输入消息添加到数据验证列表?
- python - 如何在不克隆 repo 的情况下使用 python 更新 github repo 中的现有文件?
- python - 如何让python从列表中随机选择一些东西,如果在输入提示中输入,它将按预期显示确切的答案
- c++ - 为套接字编程动态分配内存
- javascript - 我如何使用 gatsby 和 Netlify CMS 进行数据收集
- ruby-on-rails - ARM64架构(M1芯片):无法安装pg gem(使用PostgresApp)
- python - 根据另一个数组的样本从 numpy 数组中获取样本
- postgresql - PostgreSQL - 触发 INSERT 或 UPDATE