好的,星期五下午,我需要完成这件事:
需要转换以下xml:
<?xml version="1.0" encoding="UTF-8"?>
<ProfiledSettings>
<PropertySet File="properties.txt">
<Property Name="scheduler.time">19h30</Property>
</PropertySet>
<PropertySet File="properties2.txt">
<Property Name="inclusions.filters" />
<Property Name="inclusions" />
</PropertySet>
</ProfiledSettings>
到此:
<?xml version="1.0" encoding="UTF-8"?>
<ProfiledSettings>
<PropertySet File="properties.txt">
<Property Name="scheduler.time">19</Property>
</PropertySet>
<PropertySet File="properties2.txt">
<Property Name="inclusions.filters" />
<Property Name="inclusions" />
</PropertySet>
</ProfiledSettings>
请注意,'19h30'已更改为'19'。
我的xslt不太好,但我知道它应该很简单。
XSLT文档应该如何进行此转换?
答案 0 :(得分:2)
标识转换以及与您要更改的属性匹配的模板。第二个模板复制输入Property节点及其所有属性,并修改文本内容。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Property[@Name='scheduler.time']">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:value-of select="substring-before(text(),'h')"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
这最终起了作用:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Property[@Name='scheduler.time']">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:value-of select="substring-before(text(),'h')"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:copy>
</xsl:copy>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>