我与 teamsite 和 xsl 一起使用 xsl 生成输出,我试图弄清楚如何动态关闭和打开标签。问题是:我有一个包含许多组件的表单(teamsite 表单),其中一个组件是行分隔符,当将此组件添加到表单时,输出应生成此标签“ContainerType Row2Col1 ContainerType>”并关闭组件和容器标签并重新打开标签。这就是我这样做的方式!
可以添加或不添加 RowDivider。这取决于用户将在页面上使用的模板。
用这种方式......我收到以下错误消息“文件过早结束”,我知道这是因为我关闭并重新打开 rowdivider 部分上的标签,但我不知道如何解决它!
<Container>
<ContainerType>Row2Col1</ContainerType>
<Components>
<xsl:for-each select="content/ContentContainer">
<xsl:for-each select="CTA">
<Component>
<ComponentType>CTA</ComponentType>
</Component>
</xsl:for-each>
<xsl:for-each select="BodyText">
<Component>
<ComponentType>BodyText</ComponentType>
<Attributes>
<Attribute>
<Key>HtmlText</Key>
<Value>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:value-of select="BodyText" disable-output-escaping="yes"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</Value>
</Attribute>
</Attributes>
</Component>
</xsl:for-each>
<xsl:for-each select="RowDivider">
</Components>
</Container>
<Container>
<Components>
<ContainerType>Row3Col1</ContainerType>
</xsl:for-each>
</xsl:for-each>
</Components>
</Container>
这应该是输出
<Container>
<ContainerType>Row2Col1</ContainerType>
<Components>
<Component>
<ComponentType>BodyText</ComponentType>
<Attributes>
<Attribute>
<Key>HtmlText</Key>
<Value>
<![CDATA[ <p>Text</p> ]]>
</Value>
</Attribute>
</Attributes>
</Component>
<Component>
<ComponentType>CTA</ComponentType>
</Component>
</Components>
</Container>
<Container>
<ContainerType>Row3Col1</ContainerType>
<Components>
<Component>
<ComponentType>BodyText</ComponentType>
<Attributes>
<Attribute>
<Key>HtmlText</Key>
<Value>
<![CDATA[ <p>Text</p> ]]>
</Value>
</Attribute>
</Attributes>
</Component>
</Components>
</Container>