def xslt(self): """Returns an lxml.etree._ElementTree representation of the ISO Schematron skeleton generated XSLT translation of a STIX profile. The STIXProfileValidator uses the extension function saxon:line-number() for reporting line numbers. This function is stripped along with any references to the Saxon namespace from the exported XSLT. This is due to compatibility issues between Schematron/XSLT processing libraries. For example, SaxonPE/EE expects the Saxon namespace to be "http://saxon.sf.net/" while libxslt expects it to be "http://icl.com/saxon". The freely distributed SaxonHE library does not support Saxon extension functions at all. Returns: An ``etree._ElementTree`` XSLT document. """ if not self._schematron: return None s = etree.tostring(self._schematron.validator_xslt) s = s.replace( ' [<axsl:text/><axsl:value-of select="saxon:line-number()"/><axsl:text/>]', '') s = s.replace('xmlns:saxon="http://icl.com/saxon"', '') s = s.replace( '<svrl:ns-prefix-in-attribute-values uri="http://icl.com/saxon" prefix="saxon"/>', '') parser = utils.get_xml_parser() return etree.parse(StringIO(s), parser=parser)
def schematron(self): """Returns an lxml.etree._ElementTree representation of the ISO Schematron translation of a STIX profile. The STIXProfileValidator uses the extension function saxon:line-number() for reporting line numbers. This function is stripped along with any references to the Saxon namespace from the exported XSLT. This is due to compatibility issues between Schematron/XSLT processing libraries. For example, SaxonPE/EE expects the Saxon namespace to be "http://saxon.sf.net/" while libxslt expects it to be "http://icl.com/saxon". The freely distributed SaxonHE library does not support Saxon extension functions at all. Returns: An ``etree._ElementTree`` Schematron document. """ to_replace = ' %s' % SAXON_LINENO s = etree.tostring(self._schematron.schematron) s = s.replace(to_replace, '') s = s.replace('<ns prefix="saxon" uri="http://icl.com/saxon"/>', '') parser = utils.get_xml_parser() return etree.parse(StringIO(s), parser=parser)
def xslt(self): """Returns an lxml.etree._ElementTree representation of the ISO Schematron skeleton generated XSLT translation of a STIX profile. The STIXProfileValidator uses the extension function saxon:line-number() for reporting line numbers. This function is stripped along with any references to the Saxon namespace from the exported XSLT. This is due to compatibility issues between Schematron/XSLT processing libraries. For example, SaxonPE/EE expects the Saxon namespace to be "http://saxon.sf.net/" while libxslt expects it to be "http://icl.com/saxon". The freely distributed SaxonHE library does not support Saxon extension functions at all. Returns: An ``etree._ElementTree`` XSLT document. """ if not self._schematron: return None s = etree.tostring(self._schematron.validator_xslt) s = s.replace(' [<axsl:text/><axsl:value-of select="saxon:line-number()"/><axsl:text/>]', '') s = s.replace('xmlns:saxon="http://icl.com/saxon"', '') s = s.replace('<svrl:ns-prefix-in-attribute-values uri="http://icl.com/saxon" prefix="saxon"/>', '') parser = utils.get_xml_parser() return etree.parse(StringIO(s), parser=parser)
def test_get_parser(self): parser = utils.get_xml_parser() self.assertTrue(isinstance(parser, etree.ETCompatXMLParser))