如何在xslt中更改标签名称?

时间:2017-02-28 09:47:55

标签: jquery xml xslt xslt-1.0 xslt-2.0

你能告诉我如何更改标签名称xslt吗? ?我想将img代码更改为imp-img代码。 这是我的代码 http://xsltransform.net/bwdwsT/1

预期

<!DOCTYPE html
  PUBLIC "XSLT-compat">
<hmtl>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>New Version!</title>
   </head>
   <aa>
            <div class="section1">
         <div class="Normal">
            <p>
               <imp-img height="260" alt="" hspace="6" width="310" align="left" vspace="6" src="/photo/a.cms">
               ffff<br>
               <br>
               hh<br>
               <br>
               vvggg<br>
               <br>
               vv<br>
               <br>
               ftr<br>
               <br>
               fff
            </p>

         </div>

      </div>

   </aa>
</hmtl>

`转换代码

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

    <xsl:template match="/">
      <hmtl>
        <head>
          <title>New Version!</title>
        </head>
        <xsl:apply-templates/>
      </hmtl>
    </xsl:template>

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

当前输出

<!DOCTYPE html
  PUBLIC "XSLT-compat">
<hmtl>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>New Version!</title>
   </head>
   <aa>

      <div class="section1">

         <div class="Normal">

            <p>
               <span class="Drop-Film" multiline="0">
                  <span class="italic" multiline="0">
                     \xxxcc
                     </span>
                  </span>

            </p>

            <p>
               xxx
            </p>

            <p>
               xxxx
            </p>

         </div>

      </div>

   </aa>
</hmtl>

更新

http://xsltransform.net/bwdwsT/2

2 个答案:

答案 0 :(得分:0)

此处http://xsltransform.net/bwdwsT/5

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

    <xsl:template match="/">
      <hmtl>
        <head>
          <title>New Version!</title>
        </head>
        <xsl:apply-templates/>
      </hmtl>
    </xsl:template>

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

    <xsl:template match="aa/div/div/p/imp-img">          
        <img><xsl:apply-templates select="@*|node()" /></img>
    </xsl:template>


</xsl:transform>

它基于此How do I rename XML tags using XSLT

更新1

选择器的新版本

答案 1 :(得分:0)

您也可以使用axis仅在具有特定祖先时更改标记 - 在您的情况下aa。只需在选择器

中使用ancestor::aa即可
    <?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <hmtl>
            <head>
                <title>New Version!</title>
            </head>
            <xsl:apply-templates/>
        </hmtl>
    </xsl:template>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="imp-img[ancestor::aa]">
        <img>
            <xsl:apply-templates select="@*|node()"/>
        </img>
    </xsl:template>
</xsl:transform>