You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在InfoPath中将XSD内指定元素设置为可选?

解决InfoPath中XSD元素强制必填的问题

我明白你的困扰——这些初始值字段在InfoPath里被锁成必填,没法留空,问题根源其实在XSD的默认规则里:元素的minOccurs属性默认值是1,意味着该元素必须出现,所以InfoPath会自动把它们设为必填项。要让senior_initials、senior_initials2、junior_initials、junior_initials2变成可选元素,只需要在它们被引用的位置添加minOccurs="0"即可。

具体修改点

在senior_consultants和junior_consultants这两个复杂类型的<xs:sequence>内部,给目标元素加上minOccurs="0"属性:

  • 对senior_initials和senior_initials2,修改对应的<xs:element ref="..."/>标签
  • 对junior_initials和junior_initials2,做同样的修改

修改后的完整XSD代码

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of simple elements -->
<xs:element name="description_short">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="description_medium">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="520"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="description_long">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="3000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="post_project">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="author" type="xs:string"/>
<!-- Author of storycard -->
<xs:element name="senior_initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([A-Z]{2}|[A-Z]{3})(\s[A-Z]{2}|\s[A-Z]{3})?"/>
<!-- Must be UPPERCASE letters and space between each set of initials-->
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="senior_initials2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([A-Z]{2}|[A-Z]{3})(\s[A-Z]{2}|\s[A-Z]{3})"/>
<!-- Must be UPPERCASE letters and space between each set of initials-->
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="senior_count" type="xs:positiveInteger"/>
<xs:element name="junior_initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([A-Z]{2}|[A-Z]{3})(\s[A-Z]{2}|\s[A-Z]{3})?"/>
<!-- Must be UPPERCASE letters and space between each set of initials -->
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="junior_initials2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([A-Z]{2}|[A-Z]{3})(\s[A-Z]{2}|\s[A-Z]{3})?"/>
<!-- Must be UPPERCASE letters and space between each set of initials -->
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="junior_count" type="xs:positiveInteger"/>
<xs:element name="orglevel">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Corporate"/>
<xs:enumeration value="Division"/>
<xs:enumeration value="Business Unit"/>
<xs:enumeration value="Team/Product"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="service">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Cascading Strategy"/>
<xs:enumeration value="Executing Projects"/>
<xs:enumeration value="Managing the Organization"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="startdate">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"></xs:pattern>
<!-- format DD/MM/YYYY -->
<xs:length value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="enddate">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"></xs:pattern>
<!-- format DD/MM/YYYY -->
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="confidential">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Yes"/>
<xs:enumeration value="No"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="company" type="xs:string"/>
<xs:element name="department" type="xs:string"/>
<xs:element name="sector">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Energy"/>
<xs:enumeration value="Materials"/>
<xs:enumeration value="Industrials"/>
<xs:enumeration value="Consumer discretionary"/>
<xs:enumeration value="Consumer staples"/>
<xs:enumeration value="Life sciences"/>
<xs:enumeration value="Financial services"/>
<xs:enumeration value="Information technology"/>
<xs:enumeration value="Communication services"/>
<xs:enumeration value="Utilities"/>
<xs:enumeration value="Real estate"/>
<xs:enumeration value="Other"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Other_sector_description" type="xs:string"/>
<xs:element name="Domain">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Cyber Security"/>
<xs:enumeration value="Digitilization"/>
<xs:enumeration value="Other"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Other_domain_description" type="xs:string"/>
<xs:element name="revenue">
<!-- Millions of DKK -->
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1-50"/>
<xs:enumeration value="50-250"/>
<xs:enumeration value="250-1000"/>
<xs:enumeration value="1000-5000"/>
<xs:enumeration value="5000-15000"/>
<xs:enumeration value="15000+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="employees">
<!-- Number of employees -->
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1-50"/>
<xs:enumeration value="50-500"/>
<xs:enumeration value="500-2000"/>
<xs:enumeration value="2000-5000"/>
<xs:enumeration value="5000-10000"/>
<xs:enumeration value="10000+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<!-- definition of attributes -->
<xs:attribute name="casename" type="xs:string"/>
<!-- definition of complex elements -->
<xs:element name="descriptions">
<xs:complexType>
<xs:sequence>
<xs:element ref="description_short"/>
<xs:element ref="description_medium"/>
<xs:element ref="description_long"/>
<xs:element ref="post_project"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="senior_consultants">
<xs:complexType>
<xs:sequence>
<xs:element ref="senior_initials" minOccurs="0"/>
<xs:element ref="senior_initials2" minOccurs="0"/>
<xs:element ref="senior_count"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="junior_consultants">
<xs:complexType>
<xs:sequence>
<xs:element ref="junior_initials" minOccurs="0"/>
<xs:element ref="junior_initials2" minOccurs="0"/>
<xs:element ref="junior_count"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="project">
<xs:complexType>
<xs:sequence>
<xs:element ref="orglevel"/>
<xs:element ref="service"/>
<xs:element ref="Domain"/>
<xs:element ref="Other_domain_description"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="date">
<xs:complexType>
<xs:sequence>
<xs:element ref="startdate"/>
<xs:element ref="enddate"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="client">
<xs:complexType>
<xs:sequence>
<xs:element ref="company"/>
<xs:element ref="confidential"/>
<xs:element ref="sector"/>
<xs:element ref="Other_sector_description"/>
<xs:element ref="department"/>
<xs:element ref="revenue"/>
<xs:element ref="employees"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="storycard">
<xs:complexType>
<xs:sequence>
<xs:element ref="descriptions"/>
<xs:element ref="client"/>
<xs:element ref="project"/>
<xs:element ref="date"/>
<xs:element ref="senior_consultants"/>
<xs:element ref="junior_consultants"/>
<xs:element ref="author"/>
</xs:sequence>
<xs:attribute ref="casename" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>

额外小提示

我顺手帮你删掉了XSD里重复的注释(比如重复出现的<!-- definition of simple elements -->),这些冗余内容不影响功能,但能让代码更整洁。修改后,这四个初始值字段在InfoPath里就会变成可选状态,你可以根据实际需求填写或留空了。

内容的提问来源于stack exchange,提问作者Phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:32:37