gpt4 book ai didi

xml - 到达某个节点时停止处理 XML

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:41 26 4
gpt4 key购买 nike

我正在从 XML 创建一个表单。我有以下 XML:

<data>
<personal-info type="legend" label="Personal Info"/>
<first-name type="field" label="First Name"/>
<last-name type="field" label="Last Name"/>
<settings-info type="legend" label="Settings Info"/>
<timezone type="field" label="Timezone"/>
</data>

@type等于 legend 的属性指示新的 fieldset 在哪里应该创建。我遇到的问题是我无法获得第一个 fieldset当 XML 到达下一个节点 @type 时停止处理 XML等于 legend .这是我想要创建的结果:

<fieldset>
<legend>Personal Info</legend>
<label>First Name</label>
<input type="text" name="first-name" />
<label>Last Name</label>
<input type="text" name="last-name" />
</fieldset>
<fieldset>
<legend>Settings Info</legend>
<label>TimeZone</label>
<input type="text" name="timezone" />
</fieldset>

这是否可以使用当前的 XML 结构(我无法更改它)?

最佳答案

这是一个示例 XSLT:

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>

<xsl:key name="k1" match="data/*[not(@type = 'legend')]" use="generate-id(preceding-sibling::*[@type = 'legend'][1])"/>

<xsl:template match="data">
<xsl:apply-templates select="*[@type = 'legend']"/>
</xsl:template>

<xsl:template match="data/*[@type = 'legend']">
<fieldset>
<legend>
<xsl:value-of select="@label"/>
</legend>
<xsl:apply-templates select="key('k1', generate-id())"/>
</fieldset>
</xsl:template>

<xsl:template match="data/*[@type = 'field']">
<label>
<xsl:value-of select="@label"/>
</label>
<input type="text" name="{local-name()}"/>
</xsl:template>

</xsl:stylesheet>

关于xml - 到达某个节点时停止处理 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246733/

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