在XSL中如何检查schema中给出的属性的数据类型

时间:2013-12-12 14:29:39

标签: xslt

我的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:无法编译样式表。

0 个答案:

没有答案