我应该在JSF 1.2 / 2.0 / 2.1中使用什么DTD来验证我的配置XML?

问题描述

| 目前,我有以下DTD:
<!DOCTYPE faces-config PUBLIC
 \"-//Sun Microsystems,Inc.//DTD JavaServer Faces Config 1.1//EN\"
 \"http://java.sun.com/dtd/web-facesconfig_1_1.dtd\">
而且它不会验证1.2标签,例如:
managed-bean => managed-property
而且我找不到新版本的sun: http://java.sun.com/dtd/ 从一些教程中,我看到人们根本不使用DTD来开发JSF 2,我应该尝试查找DTD还是JSF 1.2+弃用DTD? 非常感谢您的建议。     

解决方法

JSF 2.0没有DTD。这是XSD。
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<faces-config
    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-facesconfig_2_0.xsd\"
    version=\"2.0\"
>
    <!-- Config here -->
</faces-config>
同样的情况适用于JSF 1.2。
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<faces-config
    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-facesconfig_1_2.xsd\"
    version=\"1.2\"
>
    <!-- Config here -->
</faces-config>
如果您在JSF 1.2 / 2.0上使用JSF 1.1 DTD,则这些应用程序将在JSF 1.1模式下运行。您真的不想拥有它。