2016-11-10 13 views
0

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

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

XML元素不允许以数字开头。从here

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

+0

情况是我得到的JSON响应,我需要隐蔽,为XML使用正在转型。在这里它将json键转换成XML键,这是一个对所有人都通用的过程。我不想把“特定”的规则,但现在似乎没有其他方式。 – ScanQR