Exemplo n.º 1
0
 def xInclude (self, elementWrapper, baseUrl, ownerDoc):
     filePath = elementWrapper.getFilePath()
     for childElementWrapper in elementWrapper.getChildren():
         line = childElementWrapper.getStartLineNumber()
         if childElementWrapper.getNsName() == (XINC_NAMESPACE, "include"):
             href = childElementWrapper["href"]
             parse = childElementWrapper.getAttributeOrDefault ("parse", "xml")
             encoding = childElementWrapper.getAttribute ("encoding")
             if self.verbose:
                 print "Xinclude: %s" %href
             try:
                 if parse == "xml":
                     subTreeWrapper = self.parse (href, baseUrl, ownerDoc)
                     elementWrapper.replaceChildBySubtree (childElementWrapper, subTreeWrapper)
                 elif parse == "text":
                     absUrl = convertToAbsUrl (href, baseUrl)
                     fp = urllib.urlopen (absUrl)
                     data = fp.read()
                     if encoding:
                         data = data.decode(encoding)
                     newTextNode = ownerDoc.xmlIfExtCreateTextNode(data)
                     elementWrapper.element.element.insertBefore (newTextNode, childElementWrapper.element.element)
                     elementWrapper.removeChild (childElementWrapper)
                     fp.close()
                 else:
                     raise GenXmlIfError, "%s: line %s: XIncludeError: Invalid 'parse' Attribut: '%s'" %(filePath, line, parse)
             except IOError, errInst:
                 raise GenXmlIfError, "%s: line %s: IOError: %s" %(filePath, line, str(errInst))
         elif childElementWrapper.getNsName() == (XINC_NAMESPACE, "fallback"):
             raise GenXmlIfError, "%s: line %s: XIncludeError: xi:fallback tag must be child of xi:include" %(filePath, line)
Exemplo n.º 2
0
 def xInclude (self, elementWrapper, baseUrl, ownerDoc):
     filePath = elementWrapper.getFilePath()
     for childElementWrapper in elementWrapper.getChildren():
         line = childElementWrapper.getStartLineNumber()
         if childElementWrapper.getNsName() == (XINC_NAMESPACE, "include"):
             href = childElementWrapper["href"]
             parse = childElementWrapper.getAttributeOrDefault ("parse", "xml")
             encoding = childElementWrapper.getAttribute ("encoding")
             if self.verbose:
                 print "Xinclude: %s" %href
             try:
                 if parse == "xml":
                     subTreeWrapper = self.parse (href, baseUrl, ownerDoc)
                     elementWrapper.replaceChildBySubtree (childElementWrapper, subTreeWrapper)
                 elif parse == "text":
                     absUrl = convertToAbsUrl (href, baseUrl)
                     fp = urllib.urlopen (absUrl)
                     data = fp.read()
                     if encoding:
                         data = data.decode(encoding)
                     newTextNode = ownerDoc.xmlIfExtCreateTextNode(data)
                     elementWrapper.element.element.insertBefore (newTextNode, childElementWrapper.element.element)
                     elementWrapper.removeChild (childElementWrapper)
                     fp.close()
                 else:
                     raise GenXmlIfError, "%s: line %s: XIncludeError: Invalid 'parse' Attribut: '%s'" %(filePath, line, parse)
             except IOError, errInst:
                 raise GenXmlIfError, "%s: line %s: IOError: %s" %(filePath, line, str(errInst))
         elif childElementWrapper.getNsName() == (XINC_NAMESPACE, "fallback"):
             raise GenXmlIfError, "%s: line %s: XIncludeError: xi:fallback tag must be child of xi:include" %(filePath, line)
Exemplo n.º 3
0
 def loader(self, href, parse, encoding=None):
     if parse == "xml":
         data = self.parser(href, self.baseUrl, self.ownerDoc).getTree().getroot()
     else:
         absUrl = convertToAbsUrl (href, self.baseUrl)
         fp     = urllib.urlopen (absUrl)
         data = fp.read()
         if encoding:
             data = data.decode(encoding)
         fp.close()
     return data
Exemplo n.º 4
0
 def __getBaseUrl (self, elementWrapper):
     """Retrieve base URL for the given element node.
     
     Input parameter:
         elementWrapper:    wrapper of current element node
     """
     nsNameBaseAttr = NsNameTupleFactory ((XML_NAMESPACE, "base"))
     if elementWrapper.hasAttribute(nsNameBaseAttr):
         return convertToAbsUrl (elementWrapper.getAttribute(nsNameBaseAttr), self.baseUrlStack[0])
     else:
         return self.baseUrlStack[0]
Exemplo n.º 5
0
    def parseString (self, text, baseUrl="", internalOwnerDoc=None):
        absUrl = convertToAbsUrl ("", baseUrl)
        try:
            builder = ExtExpatBuilderNS("", absUrl, self)
            builder.parseString (text)

            # XInclude support
            if self.processXInclude:
                if internalOwnerDoc == None: 
                    internalOwnerDoc = builder.treeWrapper.getTree()
                self.xInclude (builder.treeWrapper.getRootNode(), absUrl, internalOwnerDoc)
        except ExpatError, errInst:
            raise GenXmlIfError, "%s: ExpatError: %s" %(baseUrl, str(errInst))
Exemplo n.º 6
0
    def parseString (self, text, baseUrl="", internalOwnerDoc=None):
        absUrl = convertToAbsUrl ("", baseUrl)
        try:
            builder = ExtExpatBuilderNS("", absUrl, self)
            builder.parseString (text)

            # XInclude support
            if self.processXInclude:
                if internalOwnerDoc == None: 
                    internalOwnerDoc = builder.treeWrapper.getTree()
                self.xInclude (builder.treeWrapper.getRootNode(), absUrl, internalOwnerDoc)
        except ExpatError, errInst:
            raise GenXmlIfError, "%s: ExpatError: %s" %(baseUrl, str(errInst))
Exemplo n.º 7
0
    def parseString (self, text, baseUrl="", ownerDoc=None):
        absUrl = convertToAbsUrl ("", baseUrl)
        tree        = ElementTreeExtension()
        treeWrapper = self.treeWrapperClass(self, tree, self.useCaching)
        parser = ExtXMLTreeBuilder("", absUrl, self, treeWrapper)
        parser.feed(text)
        treeWrapper.getTree()._setroot(parser.close())

        # XInclude support
        if self.processXInclude:
            loaderInst = ExtXIncludeLoader (self.parse, absUrl, ownerDoc)
            ElementInclude.include(treeWrapper.getTree().getroot(), loaderInst.loader)

        return treeWrapper
Exemplo n.º 8
0
    def parse (self, file, baseUrl="", internalOwnerDoc=None):
        absUrl = convertToAbsUrl(file, baseUrl)
        fp     = urllib.urlopen (absUrl)
        try:
            builder = ExtExpatBuilderNS(file, absUrl, self)
            tree = builder.parseFile(fp)

            # XInclude support
            if self.processXInclude:
                if internalOwnerDoc == None: 
                    internalOwnerDoc = builder.treeWrapper.getTree()
                self.xInclude (builder.treeWrapper.getRootNode(), absUrl, internalOwnerDoc)

            fp.close()
        except ExpatError, errInst:
            fp.close()
            raise GenXmlIfError, "%s: ExpatError: %s" %(file, str(errInst))
Exemplo n.º 9
0
    def parse (self, file, baseUrl="", internalOwnerDoc=None):
        absUrl = convertToAbsUrl(file, baseUrl)
        fp     = urllib.urlopen (absUrl)
        try:
            builder = ExtExpatBuilderNS(file, absUrl, self)
            tree = builder.parseFile(fp)

            # XInclude support
            if self.processXInclude:
                if internalOwnerDoc == None: 
                    internalOwnerDoc = builder.treeWrapper.getTree()
                self.xInclude (builder.treeWrapper.getRootNode(), absUrl, internalOwnerDoc)

            fp.close()
        except ExpatError, errInst:
            fp.close()
            raise GenXmlIfError, "%s: ExpatError: %s" %(file, str(errInst))
Exemplo n.º 10
0
 def parse (self, file, baseUrl="", ownerDoc=None):
     absUrl = convertToAbsUrl (file, baseUrl)
     fp     = urllib.urlopen (absUrl)
     try:
         tree        = ElementTreeExtension()
         treeWrapper = self.treeWrapperClass(self, tree, self.useCaching)
         parser = ExtXMLTreeBuilder(file, absUrl, self, treeWrapper)
         treeWrapper.getTree().parse(fp, parser)
         fp.close()
         
         # XInclude support
         if self.processXInclude:
             loaderInst = ExtXIncludeLoader (self.parse, absUrl, ownerDoc)
             try:
                 ElementInclude.include(treeWrapper.getTree().getroot(), loaderInst.loader)
             except IOError, errInst:
                 raise GenXmlIfError, "%s: IOError: %s" %(file, str(errInst))
         
     except ExpatError, errstr:
         fp.close()
         raise GenXmlIfError, "%s: ExpatError: %s" %(file, str(errstr))
Exemplo n.º 11
0
 def parseString (self, text, baseUrl="", internalOwnerDoc=None):
     import cStringIO
     fp = cStringIO.StringIO(text)
     absUrl = convertToAbsUrl ("", baseUrl)
     return self._parseStream (fp, "", absUrl, internalOwnerDoc)
Exemplo n.º 12
0
 def parse (self, file, baseUrl="", internalOwnerDoc=None):
     absUrl = convertToAbsUrl (file, baseUrl)
     fp     = urllib.urlopen (absUrl)
     return self._parseStream (fp, file, absUrl, internalOwnerDoc)
Exemplo n.º 13
0
 def parseString(self, text, baseUrl="", internalOwnerDoc=None):
     import cStringIO
     fp = cStringIO.StringIO(text)
     absUrl = convertToAbsUrl("", baseUrl)
     return self._parseStream(fp, "", absUrl, internalOwnerDoc)
Exemplo n.º 14
0
 def parse(self, file, baseUrl="", internalOwnerDoc=None):
     absUrl = convertToAbsUrl(file, baseUrl)
     fp = urllib.urlopen(absUrl)
     return self._parseStream(fp, file, absUrl, internalOwnerDoc)