使用xml节点(密钥)的XSL转换以数字失败开始

时间:2016-11-10 06:44:41

标签: java xml xslt xslt-1.0

我面临的问题是,如果XML响应包含以数字开头的节点(键)元素,例如< 3party /> 如果我尝试从XSL样式表中的xml获取此节点,而不是因为以下异常而失败。使用XSL 1.0的代码示例(我不能提前通知XSL 2.0)。

XML Snippet : <root>
                <3party>some_value</3party>
              </root>

XSL Snippet : Say above value is in a XSL variable response.   
              <xsl:variable select="$response/root/3party" />

转换异常我得到:

javax.xml.transform.TransformerException: Syntax error in '$response/root/3party'.
at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.passErrorsToListener(TransformerFactoryImpl.java:661)
at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:836)
ERROR: Thu Nov 10 12:10:00 IST 2016.411 ErrorHandler.fatalError(TransformationConfig.java:46) Thread: Thread[main,5,main] - Compilation of XSL Stylesheet: with Error: Could not compile stylesheet
 javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:832)

1 个答案:

答案 0 :(得分:1)

不允许Xml元素以数字开头。来自here

  

XML元素必须遵循以下命名规则:     - 元素名称区分大小写     - 元素名称必须以字母或下划线开头     - 元素名称不能以字母xml(或XML或Xml等)开头     - 元素名称可以包含字母,数字,连字符,下划线和句点     - 元素名称不能包含空格