我在xml和xslt 中有一个查询
下面是输入XML
<?xml version="1.0" encoding="UTF-8"?>
<Employer>
<Employees>
<EmployeesDetails>van ind 26%</EmployeesDetails>
</Employees>
<Employees>
<EmployeesDetails>van ind</EmployeesDetails>
</Employees>
下面是我的输出文件
<?xml version="1.0" encoding="UTF-8"?>
<Employer>
<Employees>
<Names>van</Names>
<Location>ind</Location>
<Weather>26</Weather>
</Employees>
<Employees>
<Names>van</Names>
<Location>ind</Location>
<Weather>100</Weather>
</Employees>
在XSLT中,我需要从输入XML中检查(XSL:IF)天气元素是否可用。如果可用(26%),我必须使用XSLT删除%,那么输出将为26。如果XML中没有元素(weather),则默认情况下必须创建100。
我们能在XSLT中做到这一点吗。
有人能在这里帮我吗?
请看一下下面的XSLT。
<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="EmployeesDetails">
<xsl:variable name="Detail" select="concat(., ' ')" />
<xsl:variable name="Names" select="substring-before($Detail, ' ')" />
<xsl:variable name="Location" select="substring-before(substring-after($Detail, concat($Names, ' ')), ' ')" />
<xsl:variable name="Weather" select="substring-before(substring-after($Detail, concat($Location, ' ')), '% ')" />
<Names>
<xsl:value-of select="$Names" />
</Names>
<Location>
<xsl:value-of select="$Location" />
</Location>
<Weather>
<xsl:choose>
<xsl:when test="string-length($Weather) > 0">
<xsl:value-of select="$Weather" />
</xsl:when>
<xsl:otherwise>100</xsl:otherwise>
</xsl:choose>
</Weather>
</xsl:template>
</xsl:stylesheet>
http://www.xmlplayground.com/Gg5F3z