相关疑难解决方法(0)

XSLT与某些属性不匹配

是否可以匹配属于属性子集的属性?例如,我想匹配除@ attr1和@ attr2之外的所有内容.有没有办法编写类似于以下的模板匹配语句,或者我是否以错误的方式进行此操作?

<xsl:template match="NOT(@attr1) and NOT(@attr2)">      
Run Code Online (Sandbox Code Playgroud)

谢谢

xslt xpath

5
推荐指数
1
解决办法
7026
查看次数

通过 xslt 更改 XML 属性的值

我有以下 xml 文件:

<Book description="for beginners" name="IT Book">
    <Available>yes</Available>
    <Info pages="500.</Info>
</Book>
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

<Book description="for pros" name="IT Book">
    <Available>yes</Available>
    <Info pages="500.</Info>
</Book>
Run Code Online (Sandbox Code Playgroud)

我在互联网上查找了如何正确修改 xml 文档。我发现首先我应该声明一个模板来复制所有内容:

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

但是,我不知道如何编写实际修改的模板。感谢您帮助初学者。

编辑:到目前为止,这是我的样式表(根据 uL1 的要求):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sig="http://www.w3.org/2000/09/xmldsig#">
    <xsl:output indent="yes" method="xml" omit-xml-declaration="yes"/>

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

    <xsl:template match="@description='for beginners'">
        <xsl:attribute name="{name()}">
            <xsl:text>for pros</xsl:text>
        </xsl:attribute>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

xml xslt attributes

2
推荐指数
1
解决办法
5995
查看次数

标签 统计

xslt ×2

attributes ×1

xml ×1

xpath ×1