如何使用 Ballerina 进行 XML 变形?

How to perform XML transformations with Ballerina?

Ballerina 提供什么来执行 XML 的转换? Xpath、Xsd、Xslt 的选项?我正在研究 Ballerina,但没有发现执行 XML 查询和转换的好选择。

Ballerina 还没有对 XSLT 的 OOB 支持。但是,语言语法有足够的支持来编写您自己的转换器。它提供了类似 xpath 的语法来访问元素和属性。

例如:

xml bookXML = xml `<book>
            <name>Sherlock Holmes</name>
            <author>
                <fname title="Sir">Arthur</fname>
                <mname>Conan</mname>
                <lname>Doyle</lname>
            </author>
            <!--Price: -->
            </book>`;

// Can access inner elements using field-access syntax, and attribute using '@' sign.
string title = bookXML.author.fname@["title"]

// OR
string title = bookXML["author"]["fname"]@["title"]

还有另一组本机函数,用于执行其他 XML 操作,如 selectDescendants()slice() 等。这些可以在 [1] 中找到。

同样,您可以编写自己的 XSD 解析器,以及使用上述语言特性的验证器。

[1] https://ballerina.io/learn/by-example/xml-functions.html