【发布时间】:2014-03-13 12:27:53
【问题描述】:
我想将下面的示例 sn-p 转换为多个元素。
<para font="Times" size="12" face="Bold Italic">This is some text.</para>
<para font="Times" size="12" face="Bold">This is some more text.</para>
我想把它转换成这样的东西:
<para>
<font name="Times" size="12">
<b>
<i>This is some text.</i>
</b>
</font>
</para>
<para>
<font name="Times" size="12">
<b>This is some text.</b>
</font>
</para>
有没有办法在不使用所有 <xsl:choose> 块的母亲的情况下做到这一点..?以上是具有更多属性和属性值的事物的简单示例。
我正在使用 XSLT 1.0 (xsltproc)
【问题讨论】:
-
为什么第二个
para有face="Bold"并导致<i>This is some text.</i>?另外,规则不明确。<b>应该始终是外部元素吗?最后,对此的解决方案可能对您没有用,因为这是一个“简单示例”,而您实际上拥有“更多属性和值”。如果您简化 XML,请确保保留与问题相关的复杂性。 -
老鼠,你是对的。我有一个错字已修正。
-
我认为这是一个有代表性的例子。 的顺序并不重要。
-
这个问题不是“定义明确的”。一方面,如果没有某种查找数组,就无法将“Bold”转换为
<b>,将“Italic”转换为<i>。我们需要知道查找过程中包含什么(或至少可以包含什么)。如果只是@face 属性中列出的样式,那么这个可能 相对简单。如果是“更多的属性和属性值”,那么可能不是。 -
也许不是最“明确”的问题,但所有答案都很好,帮助我以不同的方式看待问题。我最终只使用了带有查找文件的递归模板。