Java 删除“;“错误”;标记来自web.xml文件(CDATA项)

Java 删除“;“错误”;标记来自web.xml文件(CDATA项),java,xml,eclipse,xsd,web.xml,Java,Xml,Eclipse,Xsd,Web.xml,我从LDAP获取用户角色名,其中一些角色名之间有空格 现在,在web.xml中,空格可以作为角色名,所以Google告诉我使用CDATA <security-role> <role-name><![CDATA[GESMA Dispositivos Externos]]></role-name> </security-role> 我的配置是: 用于JavaEE的EclipseIndigoSR2 JBossTools 3.3.0 J

我从LDAP获取用户角色名,其中一些角色名之间有空格

现在,在
web.xml
中,空格可以作为角色名,所以Google告诉我使用
CDATA

<security-role>
  <role-name><![CDATA[GESMA Dispositivos Externos]]></role-name>
</security-role>
我的配置是:

  • 用于JavaEE的EclipseIndigoSR2
  • JBossTools 3.3.0
  • JBossAS工具2.3.0

提前谢谢。

所以。在深入研究JavaEE的各种模式文件之后,我发现
的类型实际上是一个xsd:token。这意味着您不能在其中使用空格,即使您使用的是CDATA区域


CDATA部分只是转义XML标记中通常不允许使用的字符,例如
Eclipse给您的错误/问题描述是什么?@rolve you's right,添加了该信息。错误消息表明它需要nmtoken(不能有空格),CDATA hack帮助跳过第一步验证检查,但是现在又陷入了另一个困境。您介意发布XML标题(web应用程序标签中的所有内容)吗?因为完全相同的东西在我的Eclipse中验证良好。@rolve添加了一个最小的web.xml,仍然显示相同的错误,我的Eclipse配置谢谢。你有任何参考文件吗?在本例中,由于我对login_模块进行了编码,我将能够用下划线替换内部空白,但是这些角色名称来自公司LDAP,我需要一些推动来更改它们。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <security-role>
    <role-name>GESMA</role-name>
  </security-role>
  <security-role>
    <role-name><![CDATA[GESMA Dispositivos Externos]]></role-name> <!-- Error HERE -->
  </security-role>
  <security-role>
    <role-name><![CDATA[GESMA Hospital General]]></role-name> <!-- Error HERE -->
  </security-role>
  <security-role>
    <role-name><![CDATA[GESMA Hospital Joan March]]></role-name> <!-- Error HERE -->
  </security-role>
  <security-role>
    <role-name><![CDATA[GESMA Hospital Psiquiatric]]></role-name> <!-- Error HERE -->
  </security-role>
  <security-role>
    <role-name>GESMAN_Manager</role-name>
  </security-role>
  <security-role>
    <role-name>GESMAN_Admin</role-name>
  </security-role>
</web-app>
  <xsd:complexType name="role-nameType">
    <xsd:annotation>
      <xsd:documentation>
        The role-nameType designates the name of a security role.
        The name must conform to the lexical rules for a token.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>