XSL - 将值附加到XML节点中的现有属性(HTML)

时间:2017-08-23 12:32:12

标签: xml xslt

我想将值附加到给定节点中与xsl-template

匹配的某个属性

这是我的代码。有人能告诉我为什么不工作? :)

    <xsl:template match="//*[contains(@class,'right-aligned') and @style]">
       <xsl:variable name="currentAttributeValue" select="@style"/>
       <xsl:attribute name="style">
          <xsl:value-of select="concat($currentAttributeValue, 'text-align: right !important;')"  />
       </xsl:attribute>
    </xsl:template>

我也试过打电话给&#34;帮助&#34;带参数的模板:

    <xsl:template match="//*[contains(@class,'full-width') and @style]">
       <xsl:variable name="currentAttributeValue" select="@style"/>
       <xsl:call-template name="concat">
          <xsl:with-param name="first" select="$currentAttributeValue"/>
          <xsl:with-param name="second">width: 100% !important; display: inline-block;</xsl:with-param>
       </xsl:call-template>
    </xsl:template>

这是帮手:

    <xsl:template name="concat">
       <xsl:param name="first" />
       <xsl:param name="second" />
       <xsl:attribute name="style">
          <xsl:value-of select="$first" />
           <xsl:value-of select="$second" />
       </xsl:attribute>
    </xsl:template>

但这也不起作用......有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我建议为该属性编写一个模板,例如<{3}}

const smtpTransport = mailer.createTransport({
    service: "Gmail",
    auth: {
        user: gmailEmail,
        pass: gmailPass
    }
});
let wef = fs.readFileSync("./" + fileName);
let mailOptions = {
    to: ['myemail@gmail.com'],
    subject: 'Subject line'
    attachments: [{
        contents: new Buffer(wef)
    }]
};
smtpTransport.sendMail(mailOptions, function(error, response) {
    smtpTransport.close();
    cb(error || null);
});

使用XSLT 1.0,您没有<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="*[contains(@class,'full-width')]/@style"> <xsl:attribute name="style" select="concat(., 'text-align: right !important;')"/> </xsl:template> </xsl:transform> 的{​​{1}}属性,因此需要将该模板实现为

select

答案 1 :(得分:1)

从这里开始:https://www.sitepoint.com/community/t/xslt-appending-to-a-attribute/1669

建议是:

<xsl:attribute name="attr">

    <!-- copy the current value of attr -->
    <xsl:value-of select="@attr" />

    <!-- add more to attr here -->
    blahblah

</xsl:attribute>

有关@:https://www.w3schools.com/xml/xpath_syntax.asp

的更多信息
  

@选择属性