Некоторые или ваши требования могут, другие не могут быть выполнены с использованием XML-схемы.
За одну заметку, прежде чем углубляться в детали, я также добавил дополнительный ключ / keyref (ссылочная целостность), который вы не просили, но я подумал, что это может быть полезно для будущих ссылок. UniqueWorkflowInWorkflows - это то, что вы просили; pkWorkflow / fkProcessToWorkflow, который я добавил. Между предложениями unique и key есть небольшие различия, но если вы примете key / keyref, вам не понадобится uniqueWorkflowInWorkflows.
Стоит упомянуть здесь, что в целом, если ваш дизайн допускает предложение xsd: unique, но не xsd: key; xsd: keyref может ссылаться на xsd: unique ...
Ответы:
1) См. UniqueWorkflowInWorkflows или pkWorkflow
2) См. УникальныйActionInWorkflow
3) Здесь нечего делать.
4) Невозможно выполнить в XML-схеме (я бы сказал, что это интуитивно понятно из-за ограничений в поддерживаемом синтаксисе XPath для селекторов).
5) Невозможно выполнить в схеме XML.
Ниже приведена схема XML, сгенерированная из вашего XML в соответствии со стилем разработки Russian Doll, единственное «глобальное» объявление - это объявление корневого элемента.
<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="workflowManagementSystem">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="workflows">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="workflow">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="actions">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="action">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="role" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:unique name="uniqueActionInWorkflow">
<xsd:selector xpath="actions/action"/>
<xsd:field xpath="@name"/>
</xsd:unique>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="uniqueWorkflowInWorkflows">
<xsd:selector xpath="workflow"/>
<xsd:field xpath="@name"/>
</xsd:unique>
</xsd:element>
<xsd:element name="actors">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="actor">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="role" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="processes">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="process">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="actionStatuses">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="actionStatus">
<xsd:complexType>
<xsd:attribute name="action" type="xsd:string" use="required"/>
<xsd:attribute name="actor" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="workflow" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:key name="pkWorkflow">
<xsd:selector xpath="workflows/workflow"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="fkProcessToWorkflow" refer="pkWorkflow">
<xsd:selector xpath="processes/process"/>
<xsd:field xpath="@workflow"/>
</xsd:keyref>
</xsd:element>
Это визуализация источника XSD:
![XSD Visualization](https://i.stack.imgur.com/54HOh.jpg)