0
我目前这个问题所困扰:我怎样才能在新的元件分开的子节点
我有这样的XML:
<deflist>
<term>Lorem Ipsum</term>
<def>
<para>Lorem ipsum</para>
</def>
...
<term>Lorem ipsum</term>
<def>
<para>Lorem ipsum 1</para>
<para>Lorem ipsum 2</para>
<para>Lorem ipsum 3</para>
</def>
...
</deflist>
现在我需要把它改造成这个以下结构。 我的主要问题是现在<term>
和<def>
-Elements没有“容器”,我可以使用它来匹配制作<SynonymGroups Stem="true">
元素。
<Synonyms>
<SynonymGroups Stem="true">
<Word>Lorem ipsum</Word> -->former <term>
<Word>Lorem ipsum</Word> -->former <def>
</SynonymGroups>
...
<SynonymGroups Stem="true">
<Word>Lorem ipsum</Word> -->former <term>
<Word>Lorem ipsum 1</Word> -->former <def>
<Word>Lorem ipsum 2</Word> -->former <def>
<Word>Lorem ipsum 3</Word> -->former <def>
<Word>Lorem ipsum 4</Word> -->former <def>
</SynonymGroups>
</Synonyms>
我现在的剧本是这样的
<xsl:apply-templates select="//deflist"/>
</Synonyms>
</xsl:template>
匹配deflist ..
<xsl:template match="term ">
<xsl:element name="SynonymGroups">
<xsl:attribute name="Stem">true</xsl:attribute>
<xsl:element name="Word">
<xsl:apply-templates/>
</xsl:element>
</xsl:element>
</xsl:template>
匹配term
并<word>
<SynonymGroups>
<xsl:template match="def" >
<xsl:for-each select="para">
<xsl:element name="Word">
<xsl:apply-templates/>
</xsl:element>
</xsl:for-each>
</xsl:template>
,最后是<def>
<para>
元素的模板。
如果我运行这个样式表我(自然)得到错误的输出。
像这样:
<SynonymGroups Stem="true">
<Word>Lorem ipsum</Word> -->former <term>
</SynonymGroups>
<Word>Lorem ipsum 1</Word> -->former <def>
<Word>Lorem ipsum 2</Word> -->former <def>
<Word>Lorem ipsum 3</Word> -->former <def>
<Word>Lorem ipsum 4</Word> -->former <def>
我无法弄清楚如何包含<SynonymGroups>
元素中的前<def>
元素。
在此先感谢
THX伟大的工作。 – Humfre