sca-core.xsd元素及类型分解

本文详细解析了 SCA (Service Component Architecture) 中的核心组件和接口定义,包括 componentType、composite、Service、Reference 等关键概念及其 XML 表达形式。适用于希望深入了解 SCA 架构及其实现细节的技术人员。

xml版本和字符集

<?xml version="1.0" encoding="UTF-8"?>
 
命名空间
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.osoa.org/xmlns/sca/1.0" xmlns:sca="http://www.osoa.org/xmlns/sca/1.0" elementFormDefault="qualified">

componentType & ComponentType
<element name="componentType" type="sca:ComponentType"/>
<complexType name="ComponentType">
        
<sequence>
            
<element ref="sca:implementation" minOccurs="0"/>
            
<choice minOccurs="0" maxOccurs="unbounded">
                
<element name="service" type="sca:ComponentService"/>
                
<element name="reference" type="sca:ComponentReference"/>
                
<element name="property" type="sca:Property"/>
            
</choice>
            
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        
</sequence>
        
<attribute name="constrainingType" type="QName" use="optional"/>
        
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

composite & Composite
<element name="composite" type="sca:Composite"/>
<complexType name="Composite">
        
<sequence>
            
<element name="include" type="anyURI" minOccurs="0" maxOccurs="unbounded"/>
            
<choice minOccurs="0" maxOccurs="unbounded">
                
<element name="service" type="sca:Service"/>
                
<element name="property" type="sca:Property"/>
                
<element name="component" type="sca:Component"/>
                
<element name="reference" type="sca:Reference"/>
                
<element name="wire" type="sca:Wire"/>
            
</choice>
            
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        
</sequence>
        
<attribute name="name" type="NCName" use="required"/>
        
<attribute name="targetNamespace" type="anyURI" use="required"/>
        
<attribute name="local" type="boolean" use="optional" default="false"/>
        
<attribute name="autowire" type="boolean" use="optional" default="false"/>
        
<attribute name="constrainingType" type="QName" use="optional"/>
        
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
        
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
        
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

Service
<complexType name="Service">
        
<sequence>
            
<element ref="sca:interface" minOccurs="0"/>
            
<element name="operation" type="sca:Operation" minOccurs="0" maxOccurs="unbounded"/>
            
<choice minOccurs="0" maxOccurs="unbounded">
                
<element ref="sca:binding"/>
                
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            
</choice>
            
<element ref="sca:callback" minOccurs="0"/>
            
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        
</sequence>
        
<attribute name="name" type="NCName" use="required"/>
        
<attribute name="promote" type="anyURI" use="required"/>
        
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
        
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
        
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

interface
<element name="interface" type="sca:Interface" abstract="true"/>
<complexType name="Interface" abstract="true"/>

Reference
<complexType name="Reference">
    
<sequence>
        
<element ref="sca:interface" minOccurs="0"/>
        
<element name="operation" type="sca:Operation" minOccurs="0" maxOccurs="unbounded"/>
        
<choice minOccurs="0" maxOccurs="unbounded">
            
<element ref="sca:binding"/>
            
<any namespace="##other" processContents="lax"/>
        
</choice>
        
<element ref="sca:callback" minOccurs="0"/>
        
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    
</sequence>
    
<attribute name="name" type="NCName" use="required"/>
    
<attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
    
<attribute name="wiredByImpl" type="boolean" use="optional" default="false"/>
    
<attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1"/>
    
<attribute name="promote" type="sca:listOfAnyURIs" use="required"/>
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

SCAPropertyBase & Property & PropertyValue
<complexType name="SCAPropertyBase" mixed="true">
    
<sequence>
        
<any namespace="##any" processContents="lax" minOccurs="0"/><!-- NOT an extension point; This xsd:any exists to accept the element-based or complex type property i.e. no element-based extension point under "sca:property" -->
    
</sequence><!-- mixed="true" to handle simple type -->
</complexType>

<!-- complex type for sca:property declaration -->
<complexType name="Property" mixed="true">
    
<complexContent mixed="true">
        
<extension base="sca:SCAPropertyBase">
            
<attribute name="name" type="NCName" use="required"/>
            
<attribute name="type" type="QName" use="optional"/>
            
<attribute name="element" type="QName" use="optional"/>
            
<attribute name="many" type="boolean" use="optional" default="false"/>
            
<attribute name="mustSupply" type="boolean" use="optional" default="false"/>
            
<anyAttribute namespace="##any" processContents="lax"/>
        
</extension>
        
<!-- extension defines the place to hold default value -->
        
<!-- an extension point ; attribute-based only -->
    
</complexContent>
</complexType>
<complexType name="PropertyValue" mixed="true">
    
<complexContent mixed="true">
        
<extension base="sca:SCAPropertyBase">
            
<attribute name="name" type="NCName" use="required"/>
            
<attribute name="type" type="QName" use="optional"/>
            
<attribute name="element" type="QName" use="optional"/>
            
<attribute name="many" type="boolean" use="optional" default="false"/>
            
<attribute name="source" type="string" use="optional"/>
            
<attribute name="file" type="anyURI" use="optional"/>
            
<anyAttribute namespace="##any" processContents="lax"/>
        
</extension>
        
<!-- an extension point ; attribute-based only -->
    
</complexContent>
</complexType>

binding & Binding
<element name="binding" type="sca:Binding" abstract="true"/>
<complexType name="Binding" abstract="true">
    
<sequence>
        
<element name="operation" type="sca:Operation" minOccurs="0" maxOccurs="unbounded"/>
    
</sequence>
    
<attribute name="uri" type="anyURI" use="optional"/>
    
<attribute name="name" type="NCName" use="optional"/>
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
</complexType>

bindingType & BindingType
<element name="bindingType" type="sca:BindingType"/>
<complexType name="BindingType">
    
<sequence minOccurs="0" maxOccurs="unbounded">
        
<any namespace="##other" processContents="lax"/>
    
</sequence>
    
<attribute name="type" type="QName" use="required"/>
    
<attribute name="alwaysProvides" type="sca:listOfQNames" use="optional"/>
    
<attribute name="mayProvide" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

callback & Callback
<element name="callback" type="sca:Callback"/>
<complexType name="Callback">
    
<choice minOccurs="0" maxOccurs="unbounded">
        
<element ref="sca:binding"/>
        
<any namespace="##other" processContents="lax"/>
    
</choice>
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

Component
<complexType name="Component">
    
<sequence>
        
<element ref="sca:implementation" minOccurs="0"/>
        
<choice minOccurs="0" maxOccurs="unbounded">
            
<element name="service" type="sca:ComponentService"/>
            
<element name="reference" type="sca:ComponentReference"/>
            
<element name="property" type="sca:PropertyValue"/>
        
</choice>
        
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    
</sequence>
    
<attribute name="name" type="NCName" use="required"/>
    
<attribute name="autowire" type="boolean" use="optional" default="false"/>
    
<attribute name="constrainingType" type="QName" use="optional"/>
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

ComponentService
<complexType name="ComponentService">
    
<complexContent>
        
<restriction base="sca:Service">
            
<sequence>
                
<element ref="sca:interface" minOccurs="0"/>
                
<element name="operation" type="sca:Operation" minOccurs="0" maxOccurs="unbounded"/>
                
<choice minOccurs="0" maxOccurs="unbounded">
                    
<element ref="sca:binding"/>
                    
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
                
</choice>
                
<element ref="sca:callback" minOccurs="0"/>
                
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            
</sequence>
            
<attribute name="name" type="NCName" use="required"/>
            
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
            
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
            
<anyAttribute namespace="##any" processContents="lax"/>
        
</restriction>
    
</complexContent>
</complexType>

ComponentReference
<complexType name="ComponentReference">
    
<complexContent>
        
<restriction base="sca:Reference">
            
<sequence>
                
<element ref="sca:interface" minOccurs="0"/>
                
<element name="operation" type="sca:Operation" minOccurs="0" maxOccurs="unbounded"/>
                
<choice minOccurs="0" maxOccurs="unbounded">
                    
<element ref="sca:binding"/>
                    
<any namespace="##other" processContents="lax"/>
                
</choice>
                
<element ref="sca:callback" minOccurs="0"/>
                
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            
</sequence>
            
<attribute name="name" type="NCName" use="required"/>
            
<attribute name="autowire" type="boolean" use="optional" default="false"/>
            
<attribute name="wiredByImpl" type="boolean" use="optional" default="false"/>
            
<attribute name="target" type="sca:listOfAnyURIs" use="optional"/>
            
<attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1"/>
            
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
            
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
            
<anyAttribute namespace="##any" processContents="lax"/>
        
</restriction>
    
</complexContent>
</complexType>

implementation & Implementation
<element name="implementation" type="sca:Implementation" abstract="true"/>
<complexType name="Implementation" abstract="true">
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
</complexType>

implementationType & ImplementationType
<element name="implementationType" type="sca:ImplementationType"/>
<complexType name="ImplementationType">
    
<sequence minOccurs="0" maxOccurs="unbounded">
        
<any namespace="##other" processContents="lax"/>
    
</sequence>
    
<attribute name="type" type="QName" use="required"/>
    
<attribute name="alwaysProvides" type="sca:listOfQNames" use="optional"/>
    
<attribute name="mayProvide" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

Wire
<complexType name="Wire">
    
<sequence>
        
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    
</sequence>
    
<attribute name="source" type="anyURI" use="required"/>
    
<attribute name="target" type="anyURI" use="required"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

include & Include
<element name="include" type="sca:Include"/>
<complexType name="Include">
    
<attribute name="name" type="QName"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

Operation
<complexType name="Operation">
    
<attribute name="name" type="NCName" use="required"/>
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<attribute name="policySets" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

constrainingType & ConstrainingType
<element name="constrainingType" type="sca:ConstrainingType"/>
<complexType name="ConstrainingType">
    
<sequence>
        
<choice minOccurs="0" maxOccurs="unbounded">
            
<element name="service" type="sca:ComponentService"/>
            
<element name="reference" type="sca:ComponentReference"/>
            
<element name="property" type="sca:Property"/>
        
</choice>
        
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    
</sequence>
    
<attribute name="name" type="NCName" use="required"/>
    
<attribute name="targetNamespace" type="anyURI"/>
    
<attribute name="requires" type="sca:listOfQNames" use="optional"/>
    
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>

其他简单类型和全局属性
<simpleType name="Multiplicity">
    
<restriction base="string">
        
<enumeration value="0..1"/>
        
<enumeration value="1..1"/>
        
<enumeration value="0..n"/>
        
<enumeration value="1..n"/>
    
</restriction>
</simpleType>

<simpleType name="OverrideOptions">
    
<restriction base="string">
        
<enumeration value="no"/>
        
<enumeration value="may"/>
        
<enumeration value="must"/>
    
</restriction>
</simpleType>


<!-- Global attribute definition for @requires to permit use of intents within WSDL documents -->
<attribute name="requires" type="sca:listOfQNames"/>
<!-- Global attribute defintion for @endsConversation to mark operations as ending a conversation -->
<attribute name="endsConversation" type="boolean" default="false"/>


<simpleType name="listOfQNames">
    
<list itemType="QName"/>
</simpleType>


<simpleType name="listOfAnyURIs">
    
<list itemType="anyURI"/>
</simpleType>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值