← Back to team overview

mlhim-specs-dev team mailing list archive

[Branch ~cdd-dev/cdd/trunk] Rev 282: Moved dc & rdf namespace declarations. Added DvOrdinal generation.

 

------------------------------------------------------------
revno: 282
committer: Timothy W. Cook <timothywayne.cook@xxxxxxxxx>
branch nick: cdd
timestamp: Sat 2012-10-27 20:03:51 -0200
message:
  Moved dc & rdf namespace declarations. Added DvOrdinal generation.
modified:
  src/xls2ccd/xls2ccd.py
  src/xls2ccd/xls2ccdRM.py


--
lp:cdd
https://code.launchpad.net/~cdd-dev/cdd/trunk

Your team MLHIM Specifications Developers is subscribed to branch lp:cdd.
To unsubscribe from this branch go to https://code.launchpad.net/~cdd-dev/cdd/trunk/+edit-subscription
=== modified file 'src/xls2ccd/xls2ccd.py'
--- src/xls2ccd/xls2ccd.py	2012-10-18 14:43:48 +0000
+++ src/xls2ccd/xls2ccd.py	2012-10-27 22:03:51 +0000
@@ -77,7 +77,7 @@
         print values[9]
         ccd_dict[currkey] = [values[0],values[1],values[2],values[3],values[4],values[5],values[6],values[7],values[8],values[9],values[10],values[11],values[12],values[13],values[14],values[15],values[16],[],[],[]] # New Entry values
     else:
-        if values[17]: #DvString Enumerations
+        if values[17]: #DvString/DvOrdinal Enumerations
             ccd_dict[currkey][17].append((values[17],values[18],values[19]))
 
         elif values[20]: #DvCodedString Codes
@@ -181,6 +181,8 @@
     xsd_file.write("""<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:mlhim2="http://www.mlhim.org/xmlns/mlhim2/2_4_0";
+           xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+           xmlns:dc= "http://purl.org/dc/elements/1.1/";
            elementFormDefault="qualified"
            targetNamespace="http://www.mlhim.org/xmlns/mlhim2/2_4_0";
            xmlns:data-view="http://www.w3.org/2003/g/data-view#";
@@ -191,8 +193,7 @@
         """)
 
     xsd_file.write("""
-       <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
-                xmlns:dc= "http://purl.org/dc/elements/1.1/";>
+       <rdf:RDF>
 
         <rdf:Description rdf:about="http://www.hkcr.net/ccd/"""; + schema + """">
         <dc:title>"""+title+"""</dc:title>
@@ -317,6 +318,23 @@
             xsd_file.write(xls2ccdRM.getDvStringType(data_name, dt_id, default, dt_docs, indent,enumList))
         except UnicodeEncodeError:
             print "*********UNICODE ERROR************", enumList
+
+    elif dt =="DvOrdinalType":
+        if ccd_dict[k][17]: # Enumerations?
+            enumList = []
+            for n in range(0, len( ccd_dict[k][17])):
+                enumList.append(((ccd_dict[k][17][n][0]).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace("'", '&#39;').replace('"', '&quot;'),(ccd_dict[k][17][n][1]).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace("'", '&#39;').replace('"', '&quot;') + " : " + (ccd_dict[k][17][n][2]).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace("'", '&#39;').replace('"', '&quot;')))
+        else:
+            enumList = None
+
+        default = None
+        indent = 4
+        try:
+            xsd_file.write(xls2ccdRM.getDvOrdinalType(data_name, dt_id, default, dt_docs, indent,enumList))
+        except UnicodeEncodeError:
+            print "*********UNICODE ERROR************", enumList
+
+
     else:
         xsd_file.write("\n\n\n<!-- ***** DataType Not Yet Implemented: " +dt+ " ***** -->\n\n")
         xsd_file.write(repr(ccd_dict[k]))

=== modified file 'src/xls2ccd/xls2ccdRM.py'
--- src/xls2ccd/xls2ccdRM.py	2012-10-18 14:43:48 +0000
+++ src/xls2ccd/xls2ccdRM.py	2012-10-27 22:03:51 +0000
@@ -576,6 +576,71 @@
     return dt_str
 
 
+def getDvOrdinalType(data_name, ct_name, default, docs, indent=0, enumList=None):
+    """
+    data_name - string to use for data_name
+    ct_name - uuid string for complexType.name
+    default - an optional default string value
+    docs - string for documentation
+    indent - number of spaces to indent first line
+    enumList - a list of enumerations with doc strings as a tuple
+    """
+    if default:
+        default = " default='"+default+"' "
+    else:
+        default = ''
+    padding = ('').rjust(indent)
+
+    dt_str = '\n\n'+padding.rjust(indent) + ("<xs:complexType name='ct-"+ct_name+"'>\n")
+    dt_str += padding.rjust(indent+2) + ("<xs:complexContent>\n")
+    dt_str += padding.rjust(indent+4) + ("<xs:restriction base='mlhim2:DvOrdinalType'>\n")
+    dt_str += padding.rjust(indent+6) + ("<xs:sequence>\n")
+    #DvAny
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='1' name='data-name' type='xs:string' fixed='"+data_name+"'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' ref='mlhim2:ExceptionalValue'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-begin' type='xs:dateTime'/>\n")
+    dt_str += padding.rjust(indent+8) + ("<xs:element maxOccurs='1' minOccurs='0' name='valid-time-end' type='xs:dateTime'/>\n")
+    #DvOrdinal
+    if enumList:  # there should always be enums for DvOrdinal?
+        dt_str += padding.rjust(indent+10) + ("<xs:element maxOccurs='1' minOccurs='1' name='DvOrdinal-dv' "+default+">\n")
+        dt_str += padding.rjust(indent+12) + ("<xs:simpleType>\n")
+        dt_str += padding.rjust(indent+12) + ("<xs:restriction base='xs:decimal'>\n")
+        for n in range(1,len(enumList)+1):
+            dt_str += padding.rjust(indent+14) + ("<xs:enumeration value='"+str(n)+"'/>\n")
+        dt_str += padding.rjust(indent+12) + ("</xs:restriction>\n")
+        dt_str += padding.rjust(indent+12) + ("</xs:simpleType>\n")
+        dt_str += padding.rjust(indent+10) + ("</xs:element>\n")
+
+        dt_str += padding.rjust(indent+10) + ("<xs:element maxOccurs='1' minOccurs='1' name='symbol'>\n")
+        dt_str += padding.rjust(indent+12) + ("<xs:annotation>\n")
+        dt_str += padding.rjust(indent+14) + ("<xs:documentation>\n")
+        dt_str += padding.rjust(indent+14) + (docs + "\n")
+        dt_str += padding.rjust(indent+14) + ("</xs:documentation>\n")
+        dt_str += padding.rjust(indent+12) + ("</xs:annotation>\n")
+        dt_str += padding.rjust(indent+12) + ("<xs:simpleType>\n")
+        dt_str += padding.rjust(indent+14) + ("<xs:restriction base='xs:string'>\n")
+        for n in range(len(enumList)):
+            dt_str += padding.rjust(indent+16) + ("<xs:enumeration value='"+enumList[n][0]+"'>\n")
+            dt_str += padding.rjust(indent+16) + ("<xs:annotation>\n")
+            dt_str += padding.rjust(indent+18) + ("<xs:documentation>\n")
+            dt_str += padding.rjust(indent+18) + (enumList[n][0]+"\n")
+            dt_str += padding.rjust(indent+18) + ("</xs:documentation>\n")
+            dt_str += padding.rjust(indent+16) + ("</xs:annotation>\n")
+            dt_str += padding.rjust(indent+16) + ("</xs:enumeration>\n")
+
+        dt_str += padding.rjust(indent+14) + ("</xs:restriction>\n")
+        dt_str += padding.rjust(indent+12) + ("</xs:simpleType>\n")
+    else:
+        dt_str += "\n\n************* Error in processing enumerations. *******************\n\n"
+    dt_str += padding.rjust(indent+10) + ("</xs:element>\n")
+    dt_str += padding.rjust(indent+8) + ("</xs:sequence>\n")
+    dt_str += padding.rjust(indent+6) + ("</xs:restriction>\n")
+    dt_str += padding.rjust(indent+4) + ("</xs:complexContent>\n")
+    dt_str += padding.rjust(indent+2) + ("</xs:complexType>\n")
+
+    return dt_str
+
+
 def getDvQuantityType(data_name, ct_name, docs, indent, ta,tn,tv,tc,cs):
     """
     data_name - string to use for data_name