kri*_*hna 5 xml text-processing xmlstarlet
例如,我想将标签中的字段转换为该标签内的标签
<book name="Data Structure" price="250" pages="350"/>
Run Code Online (Sandbox Code Playgroud)
到
<book name="Data Structure">
<price>250</price>
<pages>350</pages>
</book>
Run Code Online (Sandbox Code Playgroud)
xmlstarlet我想使用或在 Linux 命令行中执行此操作sed。
process.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="//book">
<xsl:element name="book">
<xsl:apply-templates select="./@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="book/@*">
<xsl:if test="name() = 'name'">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:if>
<xsl:if test="name() != 'name'">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
input.xml:
<book name="Data Structure" price="250" pages="350"/>
Run Code Online (Sandbox Code Playgroud)
xsltproc process.xsl input.xml
<?xml version="1.0"?>
<book name="Data Structure">
<price>250</price>
<pages>350</pages>
</book>
Run Code Online (Sandbox Code Playgroud)