使用XSLT为属性添加值的前缀



我有一个变量(ImgData)作为值<p><image id="image1" name="firstimage" /></p>

如何使用XSLT将ImgData的值更改为<p><image id="m-image1" name="firstimage" />

我只是想前缀或后缀m id属性。提前谢谢。

编辑:

My ImgData取value为

<xsl:variable name="ImgData">
  <p><?image id="image1" /></p>
</xsl:variable>

如何将ImgData的值更改为

<xsl:variable name="ImgData">
      <p><?image id="m-image1" /></p>
    </xsl:variable>

根据hr_117注释,我将其添加到我的xslt中,但id没有显示。

<xsl:variable name="sam">
  <xsl:value-of select="translate($ImgData,'?','')" />      
</xsl:variable>
<xsl:value-of select="$sam"/>
<xsl:value-of select="exsl:node-set($sam)//image/@id" />

我可以打印没有"?"的Imgdata值。不知道为什么x-path不起作用。请建议。

ImagData似乎是一个字符串。因此使用xlst-1.0的唯一可能就像这个丑陋的select:

<xsl:value-of select=" concat(
                          substring-before($ImgData, substring-after($ImgData,'id=&quot;')),
                          'm-',
                          substring-after($ImgData,'id=&quot;')
                      ) "
                       disable-output-escaping="yes"
                      />

只有当字符串变量中只有一个id时才会起作用。这也可以生成:

 <p><?image id="m-image1" /></p>

但是我不建议这样做。

使用concat("Navin", "Rawat")之类的concat函数获取输出"Navin Rawat"

至少有三个问题。
*您的变量内容不是格式良好的xml,节点名不能以<?开头,这是一个处理指令的开始。
*不能使用xlst-1.0从xslt-file中使用xml访问变量的内容。这是唯一可能的扩展,例如。"object -节点集"。

尝试访问图像的id属性。

 <?xml version="1.0"?>
<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:exsl="http://exslt.org/common"
   extension-element-prefixes="exsl"
   version="1.0">
    <xsl:variable name="ImgData">
        <p>
            <image id="image1" />
        </p>
    </xsl:variable>
    <xsl:template match="/" >
        <xsl:value-of select="exsl:node-set($ImgData)//image/@id"/>
    </xsl:template>
</xsl:stylesheet>
  • 不能更改xslt变量的值。你唯一能做的就是在旧的基础上创建一个新的,并改变内容。

Update:创建新变量的示例。

<xsl:template match="/" >
        <xsl:variable name="NewImgData">
            <xsl:apply-templates select="exsl:node-set($ImgData)" mode="new-var" />
        </xsl:variable>
    </xsl:template>
    <xsl:template match="image/@id" mode="new-var">
        <xsl:attribute name="id" >
            <xsl:value-of select="concat('m-',.)"/>
        </xsl:attribute>
    </xsl:template>
    <xsl:template match="@*| node()" mode="new-var">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" mode="new-var"/>
        </xsl:copy>
    </xsl:template>

NewImgData的内容现在是:

<p><image id="m-image1"/></p>

相关内容

  • 没有找到相关文章

最新更新