【问题标题】:Wrap inside tag XSLT包裹在标签 XSLT 内
【发布时间】:2013-11-06 14:19:01
【问题描述】:

如果标签中有 ul 或 ol 之类的子元素,我如何使用 xhtml 和 xslt 将内容包装在标签内?你可以看例子来理解我的意思。

例子:

   <ul> // Input file
        ...
        <li></li>
        <li>text1 <div>text2</div></li>
        <li>text3 <div>text4</div> text5 </li>
        <li>text6 <ul><li>text7</li></ul> </li>
        <li><div>text8 <ul><li>text9</li></ul></div></li>
        <li>
            ...
            <ol>...</ol>
            ...
        </li>
        ...
    </ul>

输出文件:

    <ul> // Output file
        ...
        <li></li>
        <li>text1 <div>text2</div></li>
        <li>text3 <div>text4</div> text5 </li>
        <li><div>text6 <ul><li>text7</li></ul></div></li>
        <li><div>text8 <ul><li>text9</li></ul></div></li>
        <li><div>
            ...
            <ol>...</ol>
            ...
        </div></li>
        ...
    </ul>

【问题讨论】:

  • 如果您使用 XSLT,您能否提供一个示例输入 xml sn-p?
  • 我看到有两个地方你用&lt;div&gt; 包裹了一些内容,但还有其他类似的地方你没有。你能解释一下你如何知道你想要包裹&lt;div&gt; 的内容的规则吗?这将使某人能够就使用哪种 XSLT 模板向您提供建议。
  • @LarsH 如果 li 元素有子 ul 或 ol 并且它的内容没有被包裹在 div 中然后包裹否则只是复制内容
  • @PhilVallone &lt;?xml-stylesheet href="list.xsl" type="text/xsl"?&gt; &lt;html&gt; &lt;body&gt; &lt;ul&gt; &lt;li&gt;&lt;/li&gt; &lt;li&gt;text1 &lt;div&gt;text2&lt;/div&gt;&lt;/li&gt; &lt;li&gt;text3 &lt;div&gt;text4&lt;/div&gt; text5 &lt;/li&gt; &lt;li&gt;text6(123) &lt;ul&gt;&lt;li&gt;text7&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;div&gt;text8 &lt;ul&gt;&lt;li&gt;text9&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/li&gt; &lt;li&gt;(123) &lt;ol&gt; &lt;li&gt;элемент нумерованного списка&lt;/li&gt; &lt;li&gt;элемент нумерованного списка&lt;/li&gt; &lt;/ol&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/body&gt; &lt;/html&gt;
  • 见大卫卡莱尔回答...

标签: xslt xhtml


【解决方案1】:

XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:template match="node()|@*">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()" />
      </xsl:copy>
   </xsl:template>
   <xsl:template match="li[ul|ol]">
      <xsl:copy>
         <xsl:apply-templates select="@*" />
         <div>
            <xsl:apply-templates select="node()" />
         </div>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

生产

<?xml version="1.0" encoding="utf-8"?><ul> // Input file
        ...
        <li/>
        <li>text1 <div>text2</div></li>
        <li>text3 <div>text4</div> text5 </li>
        <li><div>text6 <ul><li>text7</li></ul> </div></li>
        <li><div>text8 <ul><li>text9</li></ul></div></li>
        <li><div>
            ...
            <ol>...</ol>
            ...
        </div></li>
        ...
    </ul>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2012-11-17
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多