Xslt 位于段落文本中的XSL转换子节点

Xslt 位于段落文本中的XSL转换子节点,xslt,Xslt,假设我有以下xml,我需要什么xsl来将p标记中的note标记转换为sup标记 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <root> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent<note>1</not

假设我有以下xml,我需要什么xsl来将
p
标记中的
note
标记转换为
sup
标记

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent<note>1</note> vel nisi non sapien venenatis vehicula. Nunc et dignissim ligula. Praesent aliquet nisl eget quam sollicitudin a faucibus eros dapibus. Aliquam cursus elit at tortor lacinia congue. Donec sit amet felis risus, a mollis ante. Integer sit amet massa sed metus semper cursus id id enim. Vestibulum felis nunc, pellentesque non lobortis et, porttitor eu libero. Curabitur eget nulla quam. Etiam erat arcu, vulputate sed volutpat consequat, adipiscing et tortor. Quisque imperdiet laoreet fermentum. Mauris ac felis vel lectus semper posuere. Etiam luctus augue et odio suscipit varius. Curabitur tincidunt purus quis tellus pretium imperdiet. In rhoncus rutrum orci, sed venenatis sem volutpat non. Curabitur tincidunt lacinia sem at luctus. Donec et diam eu massa interdum dapibus a et elit. Donec malesuada urna et nunc volutpat gravida.</p>
<p>Donec varius placerat venenatis. In neque sem, sollicitudin sed eleifend et, tristique eu turpis. Donec quis nisi lectus. Nullam gravida vestibulum arcu non aliquet. Nullam ut felis metus. Proin mollis tellus eu eros iaculis eget tristique leo fermentum. Pellentesque nec lorem vitae nibh eleifend euismod. Pellentesque nec gravida neque. Praesent mattis mi sed nisi sodales porta. Morbi risus mauris, convallis at condimentum a, interdum nec purus. Cras vulputate faucibus tempor. Aliquam eu dolor sed eros malesuada pharetra vitae vitae est. Suspendisse lacinia urna vitae mi bibendum quis<note>2</note> scelerisque augue tristique. Aenean at arcu tellus, eu placerat enim. Cras ultrices iaculis augue vitae pharetra. Praesent suscipit blandit scelerisque. Mauris et molestie purus. Vivamus volutpat enim sem, eget scelerisque turpis. Praesent viverra lectus in ipsum tristique blandit. Donec lobortis molestie purus, at feugiat leo rhoncus eget.</p>
<p>Vivamus eget convallis massa. Etiam convallis gravida tincidunt. Suspendisse tincidunt dignissim accumsan. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo placerat egestas. Donec convallis sodales volutpat. Quisque dapibus lobortis augue sit amet rhoncus. Nulla sed sem nisl, in feugiat orci. Quisque vehicula iaculis nisi ut auctor. Integer molestie nisl eget diam pharetra interdum. Mauris aliquet, libero vel congue egestas, velit est pretium leo, luctus commodo risus diam sed odio. Nullam pretium blandit ligula, quis commodo massa rhoncus eu. Nunc in hendrerit mi. Cras quis orci ut metus lacinia eleifend id eu nisi. Nunc id varius diam. Aliquam eu porta velit. Curabitur eget<note>3</note> odio neque, et aliquam nisi.</p>
<notes>
<note><nr>1</nr>Suspendisse tincidunt dignissim accumsan</note>
<note><nr>2</nr>Nunc et dignissim ligula</note>
<note><nr>3</nr>eget convallis massa</note>
</notes>
</root>

Lorem ipsum dolor sit amet,是一位杰出的献身者。非智人威尼斯交通工具。努克和尊贵的利古拉。这句话的意思是:“我不知道该怎么说。”。托托·拉西尼亚·康格的阿利奎姆·库苏斯精英。不要坐在阿梅特·菲利斯·里索斯(amet felis risus)旁边,这是一只毛驴。整数是一个完整的数字。猫科动物前庭,佩伦特斯式非lobortis et,porttitor eu libero。库拉比图尔·埃吉特·努拉·奎姆。这是一个非常复杂的问题,它是一个非常复杂的问题。拉奥里特发酵液。毛里斯·ac·菲利斯·韦尔莱克图斯·塞姆珀·波苏尔。奥古斯和奥迪奥·萨西皮特·瓦里乌斯。库拉比图尔·廷西杜特·普鲁斯·奎斯·特鲁斯·普雷蒂姆。在罗汉果中,维尼那提是一种不成熟的植物。luctus的tincidunt lacinia Curabitur sem。你要做的就是让他们成为精英。Donec malesuada urna和nunc是孕妇

静脉曲张。在neque sem中,sollicitudin使用了eleifend et,tristique eu turpis。别这样。未妊娠前庭弧非等长线。那是一只猫。莫利斯·泰勒斯·欧罗斯·艾库利斯·埃吉特·特里斯蒂克·利奥发酵液。佩伦茨克的生活是美好的。Pellentsque nec孕妇neque。Praesent mattis是我的拿铁门。Morbi risus mauris,convallis在调味品a,interdum nec purus。这句话的意思是:“我的朋友。这是一个很好的例子。拉齐尼亚·乌尔纳·维塔米·比本杜姆·奎斯·奥古斯·特里斯蒂克十字勋章。埃尼安在埃尼姆的阿尔库·泰卢斯。这是我生命的全部。帕雷森特·苏西皮特·布兰迪·斯克利斯。毛里斯和莫莱斯蒂·普罗斯。Vivamus Volatim enim sem,eget scelerisque turpis。普瑞森特·维韦拉·莱克特斯(Praesent viverra lectus)在《布朗迪特三部曲》(ipsum tristique blandit)中。Donec lobortis molestie purus,在feugiat leo rhoncus eget

万岁。孕妇惊厥发作。这是一个值得尊敬的人。Lorem ipsum dolor sit amet,是一位杰出的献身者。这是一个普通的地方。Donec convallis sodales和Pat。奥古斯·阿梅特·朗卡斯(amet rhoncus)。在封建主义的奥基中,取消了赛姆·尼索。在拍卖人处拍卖车辆。内直径的整分子。莫里斯·阿利奎特,自由的康格·埃吉斯塔斯,最美丽的狮子座,最美丽的城市。这是一个很好的例子。密歇根州亨德雷特的Nunc。这是我的梦想。葡萄品种直径。阿利奎姆·欧波塔·维利特。这是一个很好的例子

第1条蓄能显贵悬赏 第二种高贵的舌苔 马萨康瓦利斯酒店
和xsl样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/root/*">
  <html>
  <body>
    <xsl:for-each select=".">
      <xsl:choose>
        <xsl:when test="name() = 'p'">
          <p><xsl:value-of select="." /></p>
        </xsl:when>
        <xsl:when test="name() = 'notes'">
          <p><xsl:value-of select="." /></p>
        </xsl:when>
      </xsl:choose>
    </xsl:for-each>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="root">
        <html>
            <body>
                <xsl:apply-templates/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="p">
        <p>
            <xsl:apply-templates/>
        </p>
    </xsl:template>
    <xsl:template match="p/note" name="sup">
        <sup>
            <xsl:apply-templates/>
        </sup>
    </xsl:template>
    <xsl:template match="notes/note">
        <p>
            <xsl:call-template name="sup"/>
        </p>
    </xsl:template>
    <xsl:template match="nr">
        <b style="margin-right:5px">
            <xsl:apply-templates/>
        </b>
    </xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="root">
        <html>
            <body>
                <xsl:apply-templates/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="p|notes/note">
        <p>
            <xsl:next-match/>
        </p>
    </xsl:template>
    <xsl:template match="note" name="sup">
        <sup>
            <xsl:apply-templates/>
        </sup>
    </xsl:template>
    <xsl:template match="nr">
        <b>
            <xsl:apply-templates/>
        </b>
        <xsl:text> </xsl:text>
    </xsl:template>
</xsl:stylesheet>


p/note
更改为
sup
所需的只是一个身份模板(搜索,有很多答案)和另一个与
p/note
匹配的模板(见下文)

但我会选择这样的方式,因为您的样式表产生了一些奇怪的输出,但它不一定是您想要的:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:template match="root">
    <html>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

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

  <xsl:template match="p/note">
    <sup>
      <xsl:apply-templates/>
    </sup>
  </xsl:template>

  <xsl:template match="notes">
    <ol>
      <xsl:apply-templates>
        <xsl:sort select="nr" data-type="number"/>
      </xsl:apply-templates>
    </ol>
  </xsl:template>

  <xsl:template match="notes/note">
    <li>
      <xsl:apply-templates/>
    </li>
  </xsl:template>

  <xsl:template match="nr"/>

</xsl:stylesheet>

  • 这会将数据转换为HTML文档,其中
    p/note
    转换为
    sup
    notes/note
    转换为有序列表。

    此样式表:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/root/*">
      <html>
      <body>
        <xsl:for-each select=".">
          <xsl:choose>
            <xsl:when test="name() = 'p'">
              <p><xsl:value-of select="." /></p>
            </xsl:when>
            <xsl:when test="name() = 'notes'">
              <p><xsl:value-of select="." /></p>
            </xsl:when>
          </xsl:choose>
        </xsl:for-each>
      </body>
      </html>
    </xsl:template>
    </xsl:stylesheet>
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="root">
            <html>
                <body>
                    <xsl:apply-templates/>
                </body>
            </html>
        </xsl:template>
        <xsl:template match="p">
            <p>
                <xsl:apply-templates/>
            </p>
        </xsl:template>
        <xsl:template match="p/note" name="sup">
            <sup>
                <xsl:apply-templates/>
            </sup>
        </xsl:template>
        <xsl:template match="notes/note">
            <p>
                <xsl:call-template name="sup"/>
            </p>
        </xsl:template>
        <xsl:template match="nr">
            <b style="margin-right:5px">
                <xsl:apply-templates/>
            </b>
        </xsl:template>
    </xsl:stylesheet>
    
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="root">
            <html>
                <body>
                    <xsl:apply-templates/>
                </body>
            </html>
        </xsl:template>
        <xsl:template match="p|notes/note">
            <p>
                <xsl:next-match/>
            </p>
        </xsl:template>
        <xsl:template match="note" name="sup">
            <sup>
                <xsl:apply-templates/>
            </sup>
        </xsl:template>
        <xsl:template match="nr">
            <b>
                <xsl:apply-templates/>
            </b>
            <xsl:text> </xsl:text>
        </xsl:template>
    </xsl:stylesheet>
    
    
    
    

    输出:

    <html>
    <body>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent<sup>1</sup> vel nisi non sapien venenatis vehicula. Nunc et dignissim ligula. Praesent aliquet nisl eget quam sollicitudin a faucibus eros dapibus. Aliquam cursus elit at tortor lacinia congue. Donec sit amet felis risus, a mollis ante. Integer sit amet massa sed metus semper cursus id id enim. Vestibulum felis nunc, pellentesque non lobortis et, porttitor eu libero. Curabitur eget nulla quam. Etiam erat arcu, vulputate sed volutpat consequat, adipiscing et tortor. Quisque imperdiet laoreet fermentum. Mauris ac felis vel lectus semper posuere. Etiam luctus augue et odio suscipit varius. Curabitur tincidunt purus quis tellus pretium imperdiet. In rhoncus rutrum orci, sed venenatis sem volutpat non. Curabitur tincidunt lacinia sem at luctus. Donec et diam eu massa interdum dapibus a et elit. Donec malesuada urna et nunc volutpat gravida.</p>
    <p>Donec varius placerat venenatis. In neque sem, sollicitudin sed eleifend et, tristique eu turpis. Donec quis nisi lectus. Nullam gravida vestibulum arcu non aliquet. Nullam ut felis metus. Proin mollis tellus eu eros iaculis eget tristique leo fermentum. Pellentesque nec lorem vitae nibh eleifend euismod. Pellentesque nec gravida neque. Praesent mattis mi sed nisi sodales porta. Morbi risus mauris, convallis at condimentum a, interdum nec purus. Cras vulputate faucibus tempor. Aliquam eu dolor sed eros malesuada pharetra vitae vitae est. Suspendisse lacinia urna vitae mi bibendum quis<sup>2</sup> scelerisque augue tristique. Aenean at arcu tellus, eu placerat enim. Cras ultrices iaculis augue vitae pharetra. Praesent suscipit blandit scelerisque. Mauris et molestie purus. Vivamus volutpat enim sem, eget scelerisque turpis. Praesent viverra lectus in ipsum tristique blandit. Donec lobortis molestie purus, at feugiat leo rhoncus eget.</p>
    <p>Vivamus eget convallis massa. Etiam convallis gravida tincidunt. Suspendisse tincidunt dignissim accumsan. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo placerat egestas. Donec convallis sodales volutpat. Quisque dapibus lobortis augue sit amet rhoncus. Nulla sed sem nisl, in feugiat orci. Quisque vehicula iaculis nisi ut auctor. Integer molestie nisl eget diam pharetra interdum. Mauris aliquet, libero vel congue egestas, velit est pretium leo, luctus commodo risus diam sed odio. Nullam pretium blandit ligula, quis commodo massa rhoncus eu. Nunc in hendrerit mi. Cras quis orci ut metus lacinia eleifend id eu nisi. Nunc id varius diam. Aliquam eu porta velit. Curabitur eget<sup>3</sup> odio neque, et aliquam nisi.</p>
    <p><sup><b style="margin-right:5px">1</b>Suspendisse tincidunt dignissim accumsan</sup></p>
    <p><sup><b style="margin-right:5px">2</b>Nunc et dignissim ligula</sup></p>
    <p><sup><b style="margin-right:5px">3</b>eget convallis massa</sup></p>
    </body>
    </html>
    
    
    Lorem ipsum dolor sit amet,是一位杰出的献身者。非智人威尼斯交通工具。努克和尊贵的利古拉。这句话的意思是:“我不知道该怎么说。”。托托·拉西尼亚·康格的阿利奎姆·库苏斯精英。不要坐在阿梅特·菲利斯·里索斯(amet felis risus)旁边,这是一只毛驴。整数是一个完整的数字。猫科动物前庭,佩伦特斯式非lobortis et,porttitor eu libero。库拉比图尔·埃吉特·努拉·奎姆。这是一个非常复杂的问题,它是一个非常复杂的问题。拉奥里特发酵液。毛里斯·ac·菲利斯·韦尔莱克图斯·塞姆珀·波苏尔。奥古斯和奥迪奥·萨西皮特·瓦里乌斯。库拉比图尔·廷西杜特·普鲁斯·奎斯·特鲁斯·普雷蒂姆。在罗汉果中,维尼那提是一种不成熟的植物。luctus的tincidunt lacinia Curabitur sem。你要做的就是让他们成为精英。Donec malesuada urna和nunc是孕妇

    静脉曲张。在neque sem中,sollicitudin使用了eleifend et,tristique eu turpis。别这样。未妊娠前庭弧非等长线。那是一只猫。莫利斯·泰勒斯·欧罗斯·艾库利斯·埃吉特·特里斯蒂克·利奥发酵液。佩伦茨克的生活是美好的。Pellentsque nec孕妇neque。Praesent mattis是我的拿铁门。Morbi risus mauris,convallis在调味品a,interdum nec purus。这句话的意思是:“我的朋友。这是一个很好的例子。拉齐尼亚·乌尔纳·维塔米·比本杜姆·奎斯·奥古斯·特里斯蒂克十字勋章。埃尼安在埃尼姆的阿尔库·泰卢斯。这是我生命的全部。帕雷森特·苏西皮特·布兰迪·斯克利斯。毛里斯和莫莱斯蒂·普罗斯。Vivamus Volatim enim sem,eget scelerisque turpis。普瑞森特·维韦拉·莱克特斯(Praesent viverra lectus)在《布朗迪特三部曲》(ipsum tristique blandit)中。Donec lobortis molestie purus,在feugiat leo rhoncus eget

    万岁。孕妇惊厥发作。高官