> Here is the basic issue we have been having in building a CAP 1.2 implementation. Your help is appreciated. Neil recommends a change to CAP 1.2. I am not sure we want to do that, but we sure do need to find a way to use the "Standard FEMA SOA platform" without having to hand code everything behind the WSDL. So, suggestions are appreciated.
>
Neil's suggestion would entail creating Signature and EncryptedData elements as containers for the DSig and XMLEnc elements. This of course would change the schema and the specification language, a substantive change, and require a 15 day public review. I don't think this change, creating new elements, fits in the original scope for 1.2, but I had thought of creating a Security container for CAP 2.0 that could be used to hold not only the DSig and Encryption elements but other security related information for the CAP message.
I have included an alternate schema that does not require these containers but also takes a different approach than the current use of <any>. It uses imports and so therefore wasn't the first choice for 1.2 as its less portable. If this implementation problem is isolated then FEMA could use this modified schema as a workaround. The current schema using <any> does validate and works with several different parsers and libs, we'd need more feedback from a multitude of implementors before we could determine if there is indeed a problem that needs correction or is just specific to this implementation only.
Try this out and let me know,
<?xml version = "1.0" encoding = "UTF-8"?>
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
targetNamespace = "urn:oasis:names:tc:emergency:cap:1.2"
xmlns:cap = "urn:oasis:names:tc:emergency:cap:1.2"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:ds = "http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc = "http://www.w3.org/2001/04/xmlenc#"
elementFormDefault = "qualified"
attributeFormDefault = "unqualified">
<import namespace = "http://www.w3.org/2000/09/xmldsig#" schemaLocation = "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
<import namespace = "http://www.w3.org/2001/04/xmlenc#" schemaLocation = "http://www.w3.org/TR/xmlenc-core/xenc-schema.xsd"/>
<element name = "alert">
<annotation>
<documentation>CAP Alert Message (version 1.2)</documentation>
</annotation>
<complexType>
<sequence>
<element name = "identifier" type = "string"/>
<element name = "sender" type = "string"/>
<element name = "sent">
<simpleType>
<restriction base = "dateTime">
<pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
</restriction>
</simpleType>
</element>
<element name = "status">
<simpleType>
<restriction base = "string">
<enumeration value = "Actual"/>
<enumeration value = "Exercise"/>
<enumeration value = "System"/>
<enumeration value = "Test"/>
<enumeration value = "Draft"/>
</restriction>
</simpleType>
</element>
<element name = "msgType">
<simpleType>
<restriction base = "string">
<enumeration value = "Alert"/>
<enumeration value = "Update"/>
<enumeration value = "Cancel"/>
<enumeration value = "Ack"/>
<enumeration value = "Error"/>
</restriction>
</simpleType>
</element>
<element name = "source" type = "string" minOccurs = "0"/>
<element name = "scope">
<simpleType>
<restriction base = "string">
<enumeration value = "Public"/>
<enumeration value = "Restricted"/>
<enumeration value = "Private"/>
</restriction>
</simpleType>
</element>
<element name = "restriction" type = "string" minOccurs = "0"/>
<element name = "addresses" type = "string" minOccurs = "0"/>
<element name = "code" type = "string" minOccurs = "0" maxOccurs = "unbounded"/>
<element name = "note" type = "string" minOccurs = "0"/>
<element name = "references" type = "string" minOccurs = "0"/>
<element name = "incidents" type = "string" minOccurs = "0"/>
<element name = "info" minOccurs = "0" maxOccurs = "unbounded">
<complexType>
<sequence>
<element name = "language" type = "language" default = "en-US" minOccurs = "0"/>
<element name = "category" maxOccurs = "unbounded">
<simpleType>
<restriction base = "string">
<enumeration value = "Geo"/>
<enumeration value = "Met"/>
<enumeration value = "Safety"/>
<enumeration value = "Security"/>
<enumeration value = "Rescue"/>
<enumeration value = "Fire"/>
<enumeration value = "Health"/>
<enumeration value = "Env"/>
<enumeration value = "Transport"/>
<enumeration value = "Infra"/>
<enumeration value = "CBRNE"/>
<enumeration value = "Other"/>
</restriction>
</simpleType>
</element>
<element name = "event" type = "string"/>
<element name = "responseType" minOccurs = "0" maxOccurs = "unbounded">
<simpleType>
<restriction base = "string">
<enumeration value = "Shelter"/>
<enumeration value = "Evacuate"/>
<enumeration value = "Prepare"/>
<enumeration value = "Execute"/>
<enumeration value = "Avoid"/>
<enumeration value = "Monitor"/>
<enumeration value = "Assess"/>
<enumeration value = "AllClear"/>
<enumeration value = "None"/>
</restriction>
</simpleType>
</element>
<element name = "urgency">
<simpleType>
<restriction base = "string">
<enumeration value = "Immediate"/>
<enumeration value = "Expected"/>
<enumeration value = "Future"/>
<enumeration value = "Past"/>
<enumeration value = "Unknown"/>
</restriction>
</simpleType>
</element>
<element name = "severity">
<simpleType>
<restriction base = "string">
<enumeration value = "Extreme"/>
<enumeration value = "Severe"/>
<enumeration value = "Moderate"/>
<enumeration value = "Minor"/>
<enumeration value = "Unknown"/>
</restriction>
</simpleType>
</element>
<element name = "certainty">
<simpleType>
<restriction base = "string">
<enumeration value = "Observed"/>
<enumeration value = "Likely"/>
<enumeration value = "Possible"/>
<enumeration value = "Unlikely"/>
<enumeration value = "Unknown"/>
</restriction>
</simpleType>
</element>
<element name = "audience" type = "string" minOccurs = "0"/>
<element name = "eventCode" minOccurs = "0" maxOccurs = "unbounded">
<complexType>
<sequence>
<element ref = "cap:valueName"/>
<element ref = "cap:value"/>
</sequence>
</complexType>
</element>
<element name = "effective" minOccurs = "0">
<simpleType>
<restriction base = "dateTime">
<pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
</restriction>
</simpleType>
</element>
<element name = "onset" minOccurs = "0">
<simpleType>
<restriction base = "dateTime">
<pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
</restriction>
</simpleType>
</element>
<element name = "expires" minOccurs = "0">
<simpleType>
<restriction base = "dateTime">
<pattern value = "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d[-,+]\d\d:\d\d"/>
</restriction>
</simpleType>
</element>
<element name = "senderName" type = "string" minOccurs = "0"/>
<element name = "headline" type = "string" minOccurs = "0"/>
<element name = "description" type = "string" minOccurs = "0"/>
<element name = "instruction" type = "string" minOccurs = "0"/>
<element name = "web" type = "anyURI" minOccurs = "0"/>
<element name = "contact" type = "string" minOccurs = "0"/>
<element name = "parameter" minOccurs = "0" maxOccurs = "unbounded">
<complexType>
<sequence>
<element ref = "cap:valueName"/>
<element ref = "cap:value"/>
</sequence>
</complexType>
</element>
<element name = "resource" minOccurs = "0" maxOccurs = "unbounded">
<complexType>
<sequence>
<element name = "resourceDesc" type = "string"/>
<element name = "mimeType" type = "string" minOccurs = "0"/>
<element name = "size" type = "integer" minOccurs = "0"/>
<element name = "uri" type = "anyURI" minOccurs = "0"/>
<element name = "derefUri" type = "string" minOccurs = "0"/>
<element name = "digest" type = "string" minOccurs = "0"/>
</sequence>
</complexType>
</element>
<element name = "area" minOccurs = "0" maxOccurs = "unbounded">
<complexType>
<sequence>
<element name = "areaDesc" type = "string"/>
<element name = "polygon" type = "string" minOccurs = "0" maxOccurs = "unbounded"/>
<element name = "circle" type = "string" minOccurs = "0" maxOccurs = "unbounded"/>
<element name = "geocode" minOccurs = "0" maxOccurs = "unbounded">
<complexType>
<sequence>
<element ref = "cap:valueName"/>
<element ref = "cap:value"/>
</sequence>
</complexType>
</element>
<element name = "altitude" type = "string" minOccurs = "0"/>
<element name = "ceiling" type = "string" minOccurs = "0"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element ref = "ds:Signature" minOccurs = "0" maxOccurs = "unbounded" />
<element ref = "xenc:EncryptedData" minOccurs = "0" maxOccurs = "1" />
</sequence>
</complexType>
</element>
<element name = "valueName" type = "string"/>
<element name = "value" type = "string"/>
</schema>
--
--