C# Xml模式不允许在字符串的开头、内部或结尾使用空格

C# Xml模式不允许在字符串的开头、内部或结尾使用空格,c#,xml,xsd,whitespace,xmlserializer,C#,Xml,Xsd,Whitespace,Xmlserializer,我的xml模式中有string类型的元素。但是,我需要限制字符串,以禁止在字符串的开头、结尾或“内部”出现任何空格,并且长度至少为1 以下是我预期验证结果的一些值: "HELLO" (Valid) "H" (Valid) "" (Not Valid) [length = 0] " HELLO" (Not Valid) [starts with space] "HELLO " (Not Valid) [ends with space] "HEL LO" (Not Valid) [contains

我的xml模式中有string类型的元素。但是,我需要限制字符串,以禁止在字符串的开头、结尾或“内部”出现任何空格,并且长度至少为1

以下是我预期验证结果的一些值:

"HELLO" (Valid)
"H" (Valid)
"" (Not Valid) [length = 0]
" HELLO" (Not Valid) [starts with space]
"HELLO " (Not Valid) [ends with space]
"HEL LO" (Not Valid) [contains a space]
我知道如何制作一个限制字符串的简单类型,我知道如何要求长度至少为1:

<xs:simpleType name="MyString">
    <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
    </xs:restriction>
</xs:simpleType>

现在我只需要一个模式来添加到我的简单类型中,以满足我的需要

有人能告诉我该用什么图案吗

多谢各位

注意-我没有使用XMLSpy之类的程序来验证我的Xml文档。我正在编写一个C程序,它使用XmlSerializer对Xml文档进行序列化/反序列化

我之所以提出这个问题,是因为我读过关于Xml模式和空格以及使用xs:whiteSpace=preserve、collapse、replace的各种其他帖子。但我不认为XmlSerializer可以处理这个问题。

我认为这正是您所需要的。比如:

<xs:simpleType name="MyString">
    <xs:restriction base="xs:string">
        <xs:pattern value="[^\s]+"/>
    </xs:restriction>
</xs:simpleType>

请注意,除非
xs:whiteSpace=preserve
,否则值之前/之后的空格实际上可能不是值的一部分。考虑阅读下面的XSD规范和

的部分,谢谢!!)您还知道我将使用什么模式来验证字符串是否以空格开头或结尾?我不关心它是否有中间的空间,我只是不想在开始或结束的空间。例如,“Hello There”是有效的,但不是“Hello There”和“Hello There”。@JanTacci类似于(未经测试,请使用许多正则表达式工具中的一个进行尝试):“[^\s].[^\s]|[^\s]”(非空格后跟任意数量的字符,后跟非空格或单个非空格)。