问问题
2392 次
2 回答
0
这个完整而短暂的转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@normal[string-length()=6]">
<xsl:attribute name="normal">
<xsl:value-of select="concat(substring(.,1,4),'-',substring(.,5))"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
当应用于以下 XML 文档时(提供的片段包装在单个顶部元素中):
<t>
<date normal="YYYMMDD"> Month, DD, YYYY</date>
<date normal="YYYY/YYYY"> YYYY-YYYY</date>
<date normal="YYYYMM"> Month, YYYY</date>
<date normal="YYYYMM">MM-YYYY</date>
<name normal="Smith, John"> John Smith </name>
</t>
产生想要的正确结果:
<t>
<date normal="YYYMMDD"> Month, DD, YYYY</date>
<date normal="YYYY/YYYY"> YYYY-YYYY</date>
<date normal="YYYY-MM"> Month, YYYY</date>
<date normal="YYYY-MM">MM-YYYY</date>
<name normal="Smith, John"> John Smith </name>
</t>
于 2013-01-12T05:05:05.380 回答
0
像这样的东西?:
<xsl:choose>
<xsl:when text="string-length(@normal) = 6 and number(@normal) = number(@normal)">
<xsl:value-of select="concat(substring(@normal, 1, 4), '-', substring(@normal, 5, 2))" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@normal" />
</xsl:otherwise>
</xsl:choose>
number(@normal) = number(@normal)
检查确保这是@normal
一个数字,因为看起来您在normal
属性中也有一些非日期值。是否存在可能是 6 位非日期数字的风险?
于 2013-01-11T16:45:11.903 回答