gpt4 book ai didi

c# - xml 模式将范围添加到属性和文本 block

转载 作者:行者123 更新时间:2023-11-30 22:06:16 25 4
gpt4 key购买 nike

我是 xml 模式的新手,我有一个学校项目,用于制作棋盘模式。事情进展顺利。而且我想我可以用 c# 解析它以确保它全部有效,但我宁愿模式捕获问题。那么问题来了

我有一个 xml 文档,它正在处理这些片段并使它们具有修饰符和位置

<pieces>
<black>
<!--Pawns-->
<piece modifier="P">17</piece>
<piece modifier="P">27</piece>
<piece modifier="P">37</piece>
<piece modifier="P">47</piece>
<piece modifier="P">57</piece>
<piece modifier="P">67</piece>
<piece modifier="P">77</piece>
<piece modifier="P">87</piece>

<!--Rooks-->
<piece modifier="R">18</piece>
<piece modifier="R">88</piece>

<!--Knights-->
<piece modifier="N">28</piece>
<piece modifier="N">78</piece>

<!--Bishops-->
<piece modifier="B">38</piece>
<piece modifier="B">68</piece>

<!--Royalty-->
<piece modifier="Q">48</piece>
<piece modifier="K">58</piece>
</black>
</pieces>

有几件事我想做,但我不知道该怎么做,我想验证整数值不低于 11,也不高于 88。这就是我现在拥有的.我查看了类似主题的其他堆栈溢出帖子,但找不到有效的帖子。

<xs:element name="black">
<xs:complexType>
<xs:sequence>

<xs:element name="piece" minOccurs="0" maxOccurs="16">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="modifier" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element><!--End Piece-->

</xs:sequence>
</xs:complexType>
</xs:element><!--End black-->

最佳答案

有时,当 XSD 不允许您做您想做的事时,这是有原因的。例如,您的值(如 67 和 82)并不是真正的整数,因为它们不适用于减法等整数运算。它们实际上是 1-8 范围内的一对数字。因此,您最好以现代国际象棋符号(“代数符号”)中的标准方式识别棋盘上的方 block ,例如h1 或 e5。然后您可以在 XSD 中将其描述为受正则表达式限制的字符串 <xsd:pattern value="[a-h][1-8]"/> . (当然,您也可以使用限制为“[1-8][1-8]”的字符串,但在我看来,这会造成混淆)。

如果您想开始在您的模式中表达国际象棋的语义规则,例如通过规定每种颜色的棋子不能超过八个并且棋子不能在后排的规则,那么您将需要开始使用 XSD 1.1 断言。

关于c# - xml 模式将范围添加到属性和文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com