Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- s = """<!DOCTYPE root [
- ... <!ELEMENT root ANY>
- ... <!ELEMENT Person ANY>
- ... <!ELEMENT Customer EMPTY>
- ... <!ELEMENT Team EMPTY>
- ... <!ATTLIST Person SSN ID #REQUIRED>
- ... <!ATTLIST Customer id IDREF #REQUIRED>
- ... <!ATTLIST Team members IDREFS #REQUIRED>
- ... <!ATTLIST Person test CDATA "4">
- ... ]>
- ... <root>
- ... <Person SSN='A111'/>
- ... <Person SSN='A112'/>
- ... <Person SSN='A222'/>
- ... <Customer id='A111'/>
- ... <Customer id='A222334444'/>
- ... <Team members='A222334444 A333445555'/>
- ... </root>"""
- >>> e = etree.parse(StringIO(s), etree.XMLParser(load_dtd=True, attribute_defaults=True))
- >>> e.docinfo.internalDTD.elements()[1]
- <lxml.etree._DTDElementDecl object name='Person' prefix=None type='any' at 0x7f518f7462d0>
- >>> e.docinfo.internalDTD.elements()[1].attributes()
- []
- >>> for i in e.getroot():
- ... if i.tag == "Person":
- ... print(i.attrib)
- ...
- {'SSN': 'A111', 'test': '4'}
- {'SSN': 'A112', 'test': '4'}
- {'SSN': 'A222', 'test': '4'}
- >>> d = etree.DTD(StringIO(""" <!ELEMENT root ANY>
- ... <!ELEMENT Person ANY>
- ... <!ELEMENT Customer EMPTY>
- ... <!ELEMENT Team EMPTY>
- ... <!ATTLIST Person SSN ID #REQUIRED>
- ... <!ATTLIST Customer id IDREF #REQUIRED>
- ... <!ATTLIST Team members IDREFS #REQUIRED>
- ... <!ATTLIST Person test CDATA "4">
- ... """))
- >>> d.elements()[1]
- <lxml.etree._DTDElementDecl object name='Person' prefix=None type='any' at 0x7f518f7463d0>
- >>> d.elements()[1].attributes()
- [<lxml.etree._DTDAttributeDecl object name='SSN' elemname='Person' prefix=None type='id' default='required' default_value=None at 0x7f518f746310>, <lxml.etree._DTDAttributeDecl object name='test' elemname='Person' prefix=None type='cdata' default='none' default_value='4' at 0x7f518f746350>]
- >>>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement