2009-05-14 16 views
6

मैं एक नाम स्थान lxml इस उदाहरण की तरह का उपयोग कर निर्दिष्ट करने के लिए कोशिश कर रहा हूँ में नामस्थान जोड़ने (here से लिया गया):पायथन: lxml

<TreeInventory xsi:noNamespaceSchemaLocation="Trees.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
</TreeInventory> 

मैं करने के लिए स्कीमा उदाहरण जोड़ने के बारे में यकीन नहीं है उपयोग करें और स्कीमा स्थान भी। documentation गया मुझे शुरू कर दिया, जैसे कुछ कर रही द्वारा:

>>> NS = 'http://www.w3.org/2001/XMLSchema-instance' 
>>> TREE = '{%s}' % NS 
>>> NSMAP = {None: NS} 
>>> tree = etree.Element(TREE + 'TreeInventory', nsmap=NSMAP) 
>>> etree.tostring(tree, pretty_print=True) 
'<TreeInventory xmlns="http://www.w3.org/2001/XMLSchema-instance"/>\n' 

मुझे यकीन है कि यह कैसे निर्दिष्ट करने के लिए नहीं कर रहा हूँ एक उदाहरण है, हालांकि, और फिर भी कोई स्थान निर्दिष्ट। ऐसा लगता है कि कीवर्ड-तर्क etree.Element में किया जा सकता है, लेकिन मुझे नहीं पता कि यह कैसे दिखाई देता है।

उत्तर

8

कुछ और चरणों में, स्पष्टता के लिए:

>>> NS = 'http://www.w3.org/2001/XMLSchema-instance' 

जहां तक ​​मैं देख सकता हूँ, यह विशेषता noNameSpaceSchemaLocation कि आप namespaced चाहते हैं, नहीं TreeInventory तत्व है। तो:

>>> location_attribute = '{%s}noNameSpaceSchemaLocation' % NS 
>>> elem = etree.Element('TreeInventory', attrib={location_attribute: 'Trees.xsd'}) 
>>> etree.tostring(elem, pretty_print=True) 
'<TreeInventory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Trees.xsd"/>\n' 

यह है कि तुम क्या चाहते थे की तरह दिखता है ... आप गुण के बिना निश्चित रूप से कर सकता भी पहला तत्व बनाते हैं, तो, और फिर विशेषता, इस तरह सेट करें:

>>> elem = etree.Element('TreeInventory') 
>>> elem.set(location_attribute, 'Trees.xsd') 

का सवाल है nsmap पैरामीटर: मेरा मानना ​​है कि इसका उपयोग केवल परिभाषित करने के लिए किया जाता है कि धारावाहिकरण पर कौन से उपसर्ग का उपयोग करना है। इस मामले में, इसकी आवश्यकता नहीं है, क्योंकि एलएक्सएमएल जानता है कि नामस्थान के लिए सामान्य रूप से प्रयुक्त उपसर्ग "xsi" है। यदि यह कुछ प्रसिद्ध नामस्थान नहीं थे, तो आप शायद "ns0", "ns1" आदि जैसे उपसर्ग देखेंगे, जब तक कि आपने निर्दिष्ट नहीं किया कि आपने कौन से उपसर्ग को प्राथमिकता दी है। (याद रखें: उपसर्ग को कोई फर्क नहीं पड़ता है)

+0

बस छोटे सुधार: कोई नामस्थान नहीं होना चाहिए, कोई नाम नहीं है नाम, स्केमा स्थान। –

संबंधित मुद्दे