如何编写 XMLLint --shell 查询的内容?

如何编写 XMLLint --shell 查询的内容?

我用来xmllint --shell检查一个非常大的 XML 文件。我已经编写了一个 XPath 查询,它返回我想要的结果,但为了查看和保存结果,我必须先cd访问每个节点,然后write filename.xml.如果我不必每次都进行搜索并选择我想要的结果索引,那么这还不错。例子:

xpath count(/root/entry/subentry[special_id = /root/entry/subentry/special_id])
Object is a Node Set :
Set contains 121 nodes:
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[1]
write node1.xml
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[2]
write node2.xml
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[3]
write node3.xml
...
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[121]
write node121.xml

以上或多或少是我正在做的事情。有没有办法直接从搜索中将 XML 节点保存为文件,而不必cd单独保存它们并继续重复搜索?或者有没有一种方法可以保留搜索结果,或者在一个查询中获取它们的位置号?

答案1

这似乎不可能,所以我编写了一个 XSLT 来做到这一点。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">

    <xsl:template match="/">
        <root>
            <xsl:for-each select="/root/entry/subentry[special_id = /root/entry/subentry/special_id]">
                <xsl:copy-of select="."/>
            </xsl:for-each>
        </root>
    </xsl:template>
</xsl:stylesheet>

相关内容