THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
<xs:schema ....> <dfdl:format separatorPosition="infix" lengthKind="delimited" encoding="utf-8" occursCountKind="parsed" separator="" sequenceKind="ordered" separatorPosition="infix"/> <dfdl:defineFormat name="folded"> <dfdl:format layerTransform="foldedLines" layerLengthKind="delimited" layerEncoding="us-ascii"/> <!-- delimited here means to enclosing terminating markup, as no terminator is defined. --> </dfdl:defineFormat> <dfdl:defineFormat name="qp"> <dfdl:format layerTransform="quotedPrintable" layerLengthKind="pattern" layerLengthPattern="[^\n]*?(?=(?<!=)\n)"/> <!-- QPs are terminated by a newline that is not preceded by an =. This final newline is not consumed as part of the content. --> <!-- Alternatively, the QP transform itself can determine the length by searching for this final newline (but leaving it there). In which case the lengthKind would be "implicit" --> </dfdl:defineFormat> <xs:element name="VCalendar" dfdl:initiator="BEGIN:VCALENDAR%NL;" dfdl:terminator="END:VCALENDAR%NL; END:VCALENDAR"> <xs:complexType> <xs:sequence dfdl:separator="%NL;" dfdl:sequenceKind="unordered"> <xs:sequence dfdl:ref="tns:folded"> <xs:element name="ProdID" type="xs:string" dfdl:initiator="PRODID:" minOccurs="0" dfdl:ref="tns:folded"/> <xs</xs:sequence> <xs:element name="Version" type="xs:string" dfdl:initiator="VERSION:" minOccurs="0" /> <xs:element name="VEvent" maxOccurs="unbounded" minOccurs="0" dfdl:occursCountKind="parsed" dfdl:initiator="BEGIN:VEVENT%NL;" dfdl:terminator="END:VEVENT"> <xs:complexType> <xs:sequence dfdl:separator="%NL;" dfdl:sequenceKind="unordered"> <xs:element name="DTStart" type="xs:string" dfdl:initiator="DTSTART:" /> <xs:element name="DTEnd" type="xs:string" dfdl:initiator="DTEND:" /> <!-- content from here could have long lines, so must be folded --> <xs:sequence dfdl:ref="tns:folded"> <xs:element name="Location" type="xs:string" dfdl:initiator="LOCATION:" minOccurs="0"/> <xs:element name="UID" type="xs:string" dfdl:initiator="UID:" minOccurs="0"/> <xs:element name="Description" dfdl:initiator="DESCRIPTION:" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Encoding" type="xs:string" dfdl:initiator="ENCODING=" dfdl:terminator=":" minOccurs="0" /> <xs:choice dfdl:choiceDispatchKey="{ if (fn:exists(./Encoding)) then ./Encoding else '' }"> <!-- we inspect the value of the Encoding element and decide what branch of the choice based on it --> <xs:sequence dfdl:choiceBranchKey="QUOTED-PRINTABLE"> dfdl:separator="" dfdl:sequenceKind="unordered"> <!-- Each branch starts with a distinct dummy element to satisfy the UPA rules of XML Schema --> <xs:element name="QP" type="xs:string" dfdl:inputValueCalc="{ '' }" /> <!-- Here notice tha tthe layerRef for the qp data is scoped to just this inner element. --> <xs:sequence dfdl:ref="tns:qp"> <xs:element name="Value" type="xs:string"/> </xs:sequence><!-- end layer quoted printable --> </xs:sequence> <!-- repeat the above pattern for the choice branches for the various encodings --> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Summary" type="xs:string" dfdl:initiator="SUMMARY:" minOccurs="0"/> <xs:element name="Priority" type="xs:string" dfdl:initiator="PRIORITY:" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence><!-- end folded layer --> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
...