xml - 使用 xslt 1.0 从多节点 xml 获取特定值
问题描述
我得到了以下xml;
<output>
<EmployeeList>
<Employee>
<EmployeeInfo>
<Id>253</Id>
<CarrierType>Employee</CarrierType>
<ArrivalDateTime>2021-04-20T15:10:20</ArrivalDateTime>
<ReadOnly>false</ReadOnly>
<Freefield>
<DefinitionId>50012</DefinitionId>
<Name>PersoonType</Name>
<value>2</value>
</Freefield>
<Freefield>
<DefinitionId>50014</DefinitionId>
<Name>Roostercode</Name>
<value>TST04</value>
</Freefield>
<Freefield>
<DefinitionId>50006</DefinitionId>
<Name>Kaart lay-out</Name>
<value>02_Medewerker_MBO</value>
</Freefield>
<Freefield>
<DefinitionId>50007</DefinitionId>
<Name>LoXS Master</Name>
<value>false</value>
</Freefield>
<LastName>Tester4</LastName>
<FirstName>Test</FirstName>
<Gender>Unknown</Gender>
<Language>nl</Language>
<Email>ttester4@work.nl</Email>
</EmployeeInfo>
</Employee>
</EmployeeList>
</output>
注意 Freefield 节点。我需要一个特定的 Freefield 节点的值,其中 DefinitionId=50014 或 Name=Roostercode。从这个 Freefield 节点我需要这个值;在本例中为“TST04”。
我尝试了以下代码的几种变体来选择值并将其分配给变量(rcode)。到目前为止,这总是会导致某种错误。
<xsl:variable name="rcode" select="/output/EmployeeList/Employee/EmployeeInfo/Freefield/[@Name='Roostercode']/value/text()"/>
任何想法来获得这个特定的价值?
也许我不能直接得到这个值,所以甚至欢迎其他方法!
解决方案需要在 xslt 1.0 中
解决方案
您的口头描述DefinitionId=50014 or Name=Roostercode
几乎可以翻译成 XPath: //Freefield[DefinitionId=50014 or Name='Roostercode']/value
。
推荐阅读
- sql - ACCESS SQL - 在日期时间值上连接 2 个表
- sql-server - 带有 SQL Server 的 OUTPUT 子句的 RepoDB
- java - Java 和 MongoDB 中的 ObjectId 类型
- python - 如何清理内存或使用 SageMaker 来避免 MemoryError: Unable to allocate for an array with shape (25000, 2000) and data type float64
- c++ - C++ atioglxx.pdb 未加载错误 glBufferData OpenGL
- hyperledger-fabric - 使用 Fabric Node SDK 实例化 Chaincode 会导致 API 错误(404):hyperledger/fabric-ccenv 的清单:未找到最新的
- javascript - 向1000多个token节点js发送FCM通知
- php - 在PHP中按键长度(值中的键长度)对数组进行降序排序
- python - Vlc 输出设备列表
- python - 如何在python tkinter中创建以美元符号开头的条目