我正在尝试使用XSD 1.1创建一个模式定义,其中一个元素的结果依赖于其他元素.例如,我列出了每个国家/地区的国家/地区列表和州名列表.当一个人选择一个国家时,只能选择该国家的州.我想要达到的伪代码看起来像这样.
<xs:schema xmlns:ie="http://www.interviewexchange.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="country">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="USA" />
<xs:enumeration value="UK" />
<xs:enumeration value="India" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="state">
<xs:simpleType>
<xs:restriction base="xs:string">
<assert test="if (country eq 'USA')">
<xs:enumeration value="MA" />
<xs:enumeration value="AR" />
<xs:enumeration value="NY" />
</assert">
<assert test="if (country eq 'India')">
<xs:enumeration value="AP" />
<xs:enumeration value="TN" />
<xs:enumeration value="MP" />
</assert">
</xs:restriction>
</xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
请建议我是否遵循正确的方法,如果我遵循正确的方法,任何人都可以给我一些如何获得这种限制的代码吗?提前致谢...
我有一个xsd文件和一个xml文件,我正在使用以下代码对xsd文件验证xml文件
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
factory.setAttribute(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
factory.setAttribute(
"http://java.sun.com/xml/jaxp/properties/schemaSource",
new InputSource(new StringReader(xsd)));
Document doc = null;
try {
DocumentBuilder parser = factory.newDocumentBuilder();
MyErrorHandler errorHandler = new MyErrorHandler();
parser.setErrorHandler(errorHandler);
doc = parser.parse(new InputSource(new StringReader(xml)));
return true;
} catch (ParserConfigurationException e) {
System.out.println("Parser not configured: " + e.getMessage());
} catch (SAXException e) {
System.out.print("Parsing XML failed due to a "
+ e.getClass().getName() + ":");
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println("IOException thrown");
e.printStackTrace();
}
return false;
Run Code Online (Sandbox Code Playgroud)
MyErrorHanlder是
private static class …Run Code Online (Sandbox Code Playgroud) 我正在寻找使用 Spring Security 在整个应用程序中存储和显示登录用户的其他详细信息的正确方法。
例如,我想在每一页的顶部显示Welcome:Mr.Smith(管理员,数学部)。为此,我想获取登录用户的前缀、姓氏、名称和部门。
我正在使用自定义UserDetails服务从数据库中获取用户。在浏览时,我发现AuthenticationhasgetDetails()可以存储与身份验证相关的其他详细信息,我可以使用该方法存储其他详细信息吗?
如果是,你能举一个简单的例子吗?我可以AuthenticationSuccessHanlder用来做这项工作,还是我以完全错误的方式看待问题?我不应该在 spring 安全层处理这个吗?我应该在哪里照顾它?