我的XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="profile">
<section name="server1" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=a1a1a1a1a1a1a1a1, Custom=null" />
<section name="server2" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=a1a1a1a1a1a1a1a1, Custom=null" />
<section name="server3" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=a1a1a1a1a1a1a1a1, Custom=null" />
</sectionGroup>
</configSections>
<profile>
<server1>
<add key="server" value="serverName1" />
<add key="check" value="0" />
<add key="user" value="sa" />
<add key="psw" value="secret" />
<add key="show" value="1" />
</server1>
<server2>
<add key="server" value="serverName2" />
<add key="check" value="0" />
<add key="user" value="sa" />
<add key="psw" value="secret" />
<add key="show" value="1" />
</server2>
<server3>
<add key="server" value="serverName3" />
<add key="check" value="0" />
<add key="user" value="sa" />
<add key="psw" value="secret" />
<add key="show" value="1" />
</server3>
</profile>
</configuration>
我想为其验证创建XSD架构。我已尝试使用在线XSD生成器(如https://www.freeformatter.com/xsd-generator.html)和3种类型的XSD设计中的任何一种,但问题是如果除了3之外的XML中有任何其他数量的服务器,验证将无法通过。
对于可以解释这种随机性的软件或其他在线XSD生成器的任何帮助或建议都非常感谢?
答案 0 :(得分:0)
我总是发现XSD.exe做得很好。这个validator也很不错。最重要的是,您可以在Notepad ++中尝试XML Tools插件。
对于复杂的XML文档,通常更容易构建它们,因此从简化版本开始,然后逐步添加其他部分。
此tutorial和此one都非常好,如果您正在努力使用xsds,那绝对值得一看。
我建议您查看教程,然后重新考虑您想要的内容并相应地重构您的xml。一个明显的第一个问题可能是server1,server2和server3有何不同?如果他们都是一样的你想要三个服务器实例;如果它们不同,你可能想要以某种方式捕获你的xml。
答案 1 :(得分:0)
XSD(XSD 1.1断言除外)无法说出这个元素的子元素必须命名为&#34; server1&#34;,&#34; server2&#34;,.. 。&#34; serverN&#34;顺序&#39;。 XSD有点家长式:它不是为了描述您可能想到的任何XML而设计的,它旨在描述设计良好的XML。您应该删除数字并调用所有元素&#34; server&#34 ;;或者如果数字用于某种目的(例如,如果在从XML中删除某些服务器元素后保留它),则将其设为属性值:<server id="server1".../>