html - 将 html 有序列表转换为 xml

标签 html xml xslt

我有一个具有不同类型的 html 有序列表,例如

<ol type=a>
    <li>This is list item a</li>
    <li>this is list item b</li>
 </ol> 

<ol type=i>
    <li>This is list item 1</li>
    <li>this is list item 2</li>
 </ol> 

我想知道我们是否可以将它们转换为下面提到的 xml 标记。

<xml>
   <orderlist>
   <li>
       <num>a</num>
       <text>This is list item a</text>
    </li>
    <li>
      <num>b</num>
      <text>This is list item b</text>
   </li>
   </orderlist>
  </xml>

 <xml>
<orderlist>
<li>
   <num>i</num>
    <text>This is list item 1</text>
</li>
<li>
   <num>ii</num>
   <text>This is list item 2</text>
</li>
</orderlist>
</xml>

我可以为 LI 放置匹配模板并轻松获取文本,但如何根据类型属性获取编号...即 a、b、c .... i、ii、iii、iv 等.. 。 任何帮助将不胜感激。

最佳答案

如果您的 HTML 是格式良好的 XML,是的:

XML 输入

<foo>
<ol type="a">
  <li>This is list item a</li>
  <li>this is list item b</li>
</ol> 

<ol type="i">
  <li>This is list item 1</li>
  <li>this is list item 2</li>
</ol>
</foo>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="ol">
    <orderedlist>
      <xsl:apply-templates select="node()|@*"/>
    </orderedlist>
  </xsl:template>

  <xsl:template match="li">
    <li>
      <num><xsl:number format="{../@type}"/></num>
      <text><xsl:apply-templates/></text>
    </li>
  </xsl:template>

</xsl:stylesheet>

XML 输出

<foo>
   <orderedlist>
      <li>
         <num>a</num>
         <text>This is list item a</text>
      </li>
      <li>
         <num>b</num>
         <text>this is list item b</text>
      </li>
   </orderedlist>
   <orderedlist>
      <li>
         <num>i</num>
         <text>This is list item 1</text>
      </li>
      <li>
         <num>ii</num>
         <text>this is list item 2</text>
      </li>
   </orderedlist>
</foo>

关于html - 将 html 有序列表转换为 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9790420/

相关文章:

java - 如何使用 JDOM 将独立的 ="no"添加到文件?

java - 使用 JAXB 从 XML 字符串创建对象

xml - 在 xslt 模板中创建 key

html - 将内容限制在绝对放置的容器中

javascript - 如何将多个元素从json文件添加到html

html - CSS 不会覆盖其他语句

c# - XSL 处理器的添加参数函数的问题

jquery - ujquery高度排列

java - 合并 list 失败

xml - 我们如何将 Microsoft Word DOCX 文件转换为 XSLT 中的 HTML?