【发布时间】:2021-04-21 07:49:29
【问题描述】:
我想通过 xsl 转换输入的 xml。我想在嵌套循环中生成书号,但 Position() 函数只返回内部循环内节点的值。使用 xslt 2.0
使输入格式正确
输入:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:z="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
<Library>
<LibraryName>Berlin Central Library</LibraryName>
<Books>
<BookName>Harry Potter</BookName>
</Books>
<Books>
<BookName>Lord of the Rings</BookName>
</Books>
</Library>
<Library>
<LibraryName>London Central Library</LibraryName>
<Books>
<BookName>The alchemist</BookName>
</Books>
<Books>
<BookName>The detective</BookName>
</Books>
</Library>
<Library>
<LibraryName>Delhi Central Library</LibraryName>
<Books>
<BookName>The Discovery of India</BookName>
</Books>
</Library>
</xsl:stylesheet>
预期输出:
<Book>
<Library Name>Berlin Central Library</Library Name>
<Book Number>1</Book Number>
<Book Name>Harry Potter</Book Name>
</Book>
<Book>
<Library Name>Berlin Central Library</Library Name>
<Book Number>2</Book Number>
<Book Name>Lord of the Rings</Book Name>
</Book>
<Book>
<Library Name>London Central Library</Library Name>
<Book Number>3</Book Number>
<Book Name>The alchemist</Book Name>
</Book>
<Book>
<Library Name>London Central Library</Library Name>
<Book Number>4</Book Number>
<Book Name>The detective</Book Name>
</Book>
<Book>
<Library Name>Delhi Central Library</Library Name>
<Book Number>5</Book Number>
<Book Name>The Discovery of India</Book Name>
</Book>
【问题讨论】:
-
<Book Number>4</Book Number>甚至不是格式良好的 XML 元素标记。Library Name或Book Name都不是。如果你嵌套的loop没有给你position()的结果,你为什么不能直接处理Books元素呢? -
使输入格式正确。将此示例创建为无法共享原始 xml。在书籍元素中。位置功能重置,例如“侦探”将书号为 2 而不是需要的 4
-
不确定“嵌套循环”是什么意思。根据猜测发布答案。下次发布您的代码。