gpt4 book ai didi

java - 删除给定节点上的 XML 内容并重新排列输出文件格式

转载 作者:行者123 更新时间:2023-12-01 15:42:09 25 4
gpt4 key购买 nike

[XSLT 样式表]

在下面的示例中,

<tag1>
<tag2>
...
<generatoritem id="name1">
<tag5>
...
<tag6>
<name>Center</name>
<keyframe>
<when>frame1</when>
<value>
<horiz>100</horiz>
<vert>100</vert>
</value>
</keyframe>
<keyframe>
<when>frame2</when>
<value>
<horiz>150</horiz>
<vert>150</vert>
</value>
</keyframe>
</tag6>
</tag5>
</generatoritem>
<generatoritem id="name2">
<tag7>
...
<tag8>
<name>Center</name>
<keyframe>
<when>frame3</when>
<value>
<horiz>100</horiz>
<vert>100</vert>
</value>
</keyframe>
<keyframe>
<when>frame4</when>
<value>
<horiz>150</horiz>
<vert>150</vert>
</value>
</keyframe>
</tag8>
</tag7>
</generatoritem>
</tag2>
</tag1>

消除多余的节点,我们尝试获得以下输出格式:

id='name1'
instance='frame1'
horiz='100'
vert='100'
instance='frame2'
horiz='150'
vert='150'

id='name2'
instance='frame3'
horiz='200'
vert='200'
instance='frame4'
horiz='250'
vert='250'

因此,基于多个 id 值,我们在特定节点上工作。标签必须被消除,只保留关键信息。

请指教。谢谢!

最佳答案

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:exslt="http://exslt.org/common">
<!-- disable xml output -->
<xsl:output method="text"/>

<xsl:variable name="toprocess">
<data>
<node>name1</node>
<node>name3</node> <!-- and other nodes you want to process -->
</data>
</xsl:variable>

<xsl:template match="/">
<xsl:apply-templates select=".//generatoritem[ @id = exslt:node-set($toprocess)/data/node]"/>
</xsl:template>

<xsl:template match="generatoritem">
id=<xsl:value-of select="@id"/>
<xsl:apply-templates select=".//keyframe"/>
<!-- just for the new line -->
<xsl:text>
</xsl:text>
</xsl:template>

<xsl:template match="keyframe">
instance='<xsl:value-of select="when"/>'
horiz='<xsl:value-of select="value/horiz"/>'
vert='<xsl:value-of select="value/vert"/>
</xsl:template>

</xsl:stylesheet>

应该给你作为输出

xsltproc 数据.xsl 数据.xml

id='name1'
instance='frame1'
horiz='100'
vert='100'
instance='frame2'
horiz='150'
vert='150'

关于java - 删除给定节点上的 XML 内容并重新排列输出文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com