我的XML包含日期值,其中模式中给出的类型不是xs:date,而是用户定义的简单类型为date_type。
在生成的XML中,我希望将类型为date_type的所有属性的日期格式从“YYYY-MM-DD”更改为“YYYYMMDD”。
下面的链接说有办法,但我无法使用属性(*,类型)编译样式表
http://www.ibm.com/developerworks/xml/library/x-schemaawarexslt/#table2
我的XML是:
<input>
<car mileage="15000" mfgDate="2012-12-31"/>
<battery mfgDate="2012-03-01" expiryDate="2014-12-31"/>
...
</input>
在我的架构文件中,我的数据类型为date_type:
<xsd:simpleType name="date_type">
<xsd:restriction base="xsd:string">
<xsd:length value="8"/>
</xsd:restriction>
</xsd:simpleType>
mfgDate和expiryDate的日期类型为:
<xsd:attribute name="mfgDate" type="sch:date_type"/>
<xsd:attribute name="expiryDate" type="sch:date_type"/>
预期输出为:
<input>
<car mileage="15000" mfgDate="20121231"/>
<battery mfgDate="20120301" expiryDate="20141231"/>
...
</input>
有没有办法检查所有类型的属性的数据类型,并执行字符串操作,如:
<xsl:template match="attribute(*,sch:date_type)">
<xsl:value-of select="translate(.,'-','')"/>
</xsl:template>
上面的行属性(*,sch:date_type)给出语法错误TransformerConfigurationException:无法编译样式表。