gpt4 book ai didi

html - 如何知道何时将结束标记放在嵌套元素上

转载 作者:行者123 更新时间:2023-11-27 23:44:13 26 4
gpt4 key购买 nike

我正在将以下 xml 转换为 html:

<rule>
<condition type="AND">
<condition type="AND">
<condition type="NOT">
</condition>
</condition>
</condition>
</rule>

从这个结构中,您可以推断出一个条件可以有其他条件(或者不像最后一个条件)。

我正在尝试在 html 中制作相同的结构,但不确定何时/如何/在何处为其中包含条件的条件放置结束标记。这是我目前得到的输出,但我希望它像上面的输出一样:

<rule>
<condition type="AND">
</condition>
<condition type="AND">
</condition>
<condition type="NOT">
</condition>
</rule>

这是我的 xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
&lt;rule&gt;
<xsl:apply-templates select=".//condition" />
&lt;/rule&gt;
</xsl:template>
<xsl:template match="condition">
<xsl:variable name="margin-left"><xsl:number value="(count(ancestor::condition) + 1) * 20" />px</xsl:variable>
<ul class="list-unstyled" style="margin:0px;margin-left:{$margin-left}">
<li>
&lt;condition type="<xsl:value-of select="@type"/>"&gt;<br />
&lt;/condition&gt;
</li>
</ul>
</xsl:template>
</xsl:stylesheet>

最佳答案

select=".//condition" 具有拉平层次结构的效果,因为您将所有级别的所有 condition 元素都选择到一个列表中.相反,您需要首先将模板应用于顶级 condition:

<xsl:template match="/rule">
&lt;rule&gt;
<xsl:apply-templates select="condition" />
&lt;/rule&gt;
</xsl:template>

然后让 condition 模板通过将模板应用于它自己的 child 来处理递归,例如:

<xsl:template match="condition">
<ul>
<li>
&lt;condition type="<xsl:value-of select="@type"/>"&gt;<br />
<xsl:apply-templates select="condition"/>
&lt;/condition&gt;
</li>
</ul>
</xsl:template>

(我省略了样式部分,一旦您了解了使用递归的概念,您就可以在完整的样式表中自行解决这个问题——事实上,如果您使用填充而不是边距,您可能不需要对祖先的全部计数因为每个 ul 都嵌套在前一个中)。

关于html - 如何知道何时将结束标记放在嵌套元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30600660/

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