Xml XSLT:到处更改属性值

Xml XSLT:到处更改属性值,xml,xslt,Xml,Xslt,我有未知/不同结构的XML文件。我必须更改属性的值。 这只是一个示例,结构可以是任何东西: <root> <SomeElement endTime='12:00:00' /> <subLevel> <OtherElement endTime='14:00:00' /> </subLevel> </root> 如果我知道属性的确切位置,我可以这样做,但是如果我不知道XML文件的结构,并

我有未知/不同结构的XML文件。我必须更改属性的值。
这只是一个示例,结构可以是任何东西:

<root>
    <SomeElement endTime='12:00:00' />
    <subLevel>
        <OtherElement endTime='14:00:00' />
    </subLevel>
</root>

如果我知道属性的确切位置,我可以这样做,但是如果我不知道XML文件的结构,并且需要为文件中的每个元素更改它,该如何做呢?这可能吗?

如果您知道如何更改该值,请编写一个模板

<xsl:template match="@endTime">
  <xsl:attribute name="{name()}">
   <!-- code to alter value here -->
  </xsl:attribute>
</xsl:template>
无需先创建
xs:dateTime


在线示例位于

如果您知道如何更改该值,请编写一个模板

<xsl:template match="@endTime">
  <xsl:attribute name="{name()}">
   <!-- code to alter value here -->
  </xsl:attribute>
</xsl:template>
无需先创建
xs:dateTime


在线示例添加到身份转换中

仅限XSLT v3.0

<xsl:mode on-no-match="shallow-copy"/>
通过临时预结束日期,以便可以使用内置的dateTime计算函数

完整XSLT (日期时间计算需要XSLT 2.0或更高版本)


2017-12-04T
应用于XML输入:

<root>
    <SomeElement endTime='12:00:00' />
    <subLevel>
        <OtherElement endTime='14:00:00' />
    </subLevel>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <SomeElement endTime="11:59:59"/>
    <subLevel>
        <OtherElement endTime="13:59:59"/>
    </subLevel>
</root>

提供您请求的XML输出:

<root>
    <SomeElement endTime='12:00:00' />
    <subLevel>
        <OtherElement endTime='14:00:00' />
    </subLevel>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <SomeElement endTime="11:59:59"/>
    <subLevel>
        <OtherElement endTime="13:59:59"/>
    </subLevel>
</root>


根据要求。

添加到身份转换中

仅限XSLT v3.0

<xsl:mode on-no-match="shallow-copy"/>
通过临时预结束日期,以便可以使用内置的dateTime计算函数

完整XSLT (日期时间计算需要XSLT 2.0或更高版本)


2017-12-04T
应用于XML输入:

<root>
    <SomeElement endTime='12:00:00' />
    <subLevel>
        <OtherElement endTime='14:00:00' />
    </subLevel>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <SomeElement endTime="11:59:59"/>
    <subLevel>
        <OtherElement endTime="13:59:59"/>
    </subLevel>
</root>

提供您请求的XML输出:

<root>
    <SomeElement endTime='12:00:00' />
    <subLevel>
        <OtherElement endTime='14:00:00' />
    </subLevel>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <SomeElement endTime="11:59:59"/>
    <subLevel>
        <OtherElement endTime="13:59:59"/>
    </subLevel>
</root>


按要求。

元素是否始终在同一子体中?否。它可以在任何地方我现在看到您的问题。元素是否始终在同一子体中?否。它可以在任何地方我现在看到您的问题