xml - मैं एक्सएमएल में टैग के ब्लॉक को कैसे टिप्पणी करूं?




comments (6)

आप कई पंक्तियों में टिप्पणी की उस शैली का उपयोग कर सकते हैं (जो एचटीएमएल में भी मौजूद है)

<detail>
    <band height="20">
    <!--
      Hello,
         I am a multi-line XML comment
         <staticText>
            <reportElement x="180" y="0" width="200" height="20"/>
            <text><![CDATA[Hello World!]]></text>
          </staticText>
      -->
     </band>
</detail>

मैं एक्सएमएल में टैग के ब्लॉक को कैसे टिप्पणी करूं?

मैं नीचे दिए गए कोड में <staticText> और इसके अंदर सब कुछ कैसे टिप्पणी कर सकता हूं?

  <detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]]></text>
      </staticText>
    </band>
  </detail>

मैं <!-- staticText--> उपयोग कर सकता हूं, लेकिन यह सिर्फ एक टैग के लिए है (जैसा कि मुझे पता है), // जावा और सी में // मुझे कुछ और पसंद है जैसे /** comment **/ का उपयोग किया जा सकता है जावा और सी, इसलिए मैं एक्सएमएल कोड के लंबे ब्लॉक टिप्पणी कर सकते हैं।


आप टेक्स्ट को एक गैर-मौजूदा प्रोसेसिंग-निर्देश के साथ लपेट सकते हैं, उदाहरण के लिए:

<detail>
<?ignore
  <band height="20">
    <staticText>
      <reportElement x="180" y="0" width="200" height="20"/>
      <text><![CDATA[Hello World!]]></text>
    </staticText>
  </band>
?>
</detail>

नेस्टेड प्रसंस्करण निर्देशों की अनुमति नहीं है और '?>' प्रसंस्करण निर्देश समाप्त होता है (देखें http://www.w3.org/TR/REC-xml/#sec-pi )


असल में, आप बहु-पंक्तियों या टैग के साथ <! --...--> प्रारूप का उपयोग कर सकते हैं:

<!--
  ...
  ...
  ...
-->

यहां टिप्पणी करने के लिए हमें नीचे लिखना है:

<!-- Your comment here -->

विंडोज और लिनक्स के लिए:

एक पंक्ति पर टिप्पणी करने के लिए शॉर्टकट:

Ctrl + /

एकाधिक लाइनों पर टिप्पणी करने के लिए शॉर्टकट:

Ctrl + Shift + /

मैक के लिए:

एक पंक्ति पर टिप्पणी करने के लिए शॉर्टकट:

cmnd + /

एकाधिक लाइनों पर टिप्पणी करने के लिए शॉर्टकट:

cmnd + Shift + /

एक बात आपको ध्यान में रखना है कि, आप किसी XML टैग की विशेषता पर टिप्पणी नहीं कर सकते हैं। उदाहरण के लिए:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    <!--android:text="Hello.."-->
    android:textStyle="bold" />

यहां, text TextView एक एक्सएमएल टैग है और text उस टैग की विशेषता है। आप एक एक्सएमएल टैग के गुणों पर टिप्पणी नहीं कर सकते हैं। आपको पूर्ण एक्सएमएल टैग पर टिप्पणी करनी है। उदाहरण के लिए:

<!--<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello.."
    android:textStyle="bold" />-->

यदि आप पूछते हैं, क्योंकि आपको <!-- --> वाक्यविन्यास के साथ त्रुटियां मिली हैं, तो यह सबसे अधिक संभावना है कि सीडीएटीए अनुभाग (और वहां ]]> भाग), जो तब टिप्पणी के बीच में स्थित है। इससे कोई फर्क नहीं पड़ता है, लेकिन आदर्श और असली दुनिया काफी अलग हो सकती है, कभी-कभी (विशेष रूप से जब यह एक्सएमएल प्रोसेसिंग की बात आती है)।

]]> को भी बदलने की कोशिश करें:

  <!--detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]--><!--]></text>
      </staticText>
    </band>
  </detail-->

एक और बात, जो दिमाग में आती है: यदि आपके एक्सएमएल की सामग्री में कहीं दो हाइफ़न हैं, तो टिप्पणी तुरंत समाप्त होती है:

<!-- <a> This is strange -- but true!</a> -->
--------------------------^ comment ends here

यह काफी आम नुकसान है। एसजीएमएल टिप्पणियों को संभालने के तरीके से विरासत में मिला है। ( इस विषय पर एक्सएमएल स्पेक पढ़ें )


मैं declxml सुझाव दे सकता declxml

पूर्ण प्रकटीकरण: मैंने इस पुस्तकालय को लिखा क्योंकि मैं एलीमेंट ट्री के साथ अनिवार्य पार्सिंग / क्रमबद्धता कोड के दर्जनों लाइनों को लिखने के बिना एक्सएमएल और पायथन डेटा संरचनाओं के बीच परिवर्तित करने का एक तरीका ढूंढ रहा था।

Declxml के साथ, आप प्रोसेसर का उपयोग अपने एक्सएमएल दस्तावेज़ की संरचना को परिभाषित करने और एक्सएमएल और पायथन डेटा संरचनाओं के बीच मैप करने के लिए कैसे करते हैं। प्रोसेसर का उपयोग सीरियलाइजेशन और पार्सिंग के साथ-साथ सत्यापन के बुनियादी स्तर के लिए किया जाता है।

पायथन डेटा संरचनाओं में पार्सिंग सरल है:

import declxml as xml

xml_string = """
<foo>
   <bar>
      <type foobar="1"/>
      <type foobar="2"/>
   </bar>
</foo>
"""

processor = xml.dictionary('foo', [
    xml.dictionary('bar', [
        xml.array(xml.integer('type', attribute='foobar'))
    ])
])

xml.parse_from_string(processor, xml_string)

जो उत्पादन का उत्पादन करता है:

{'bar': {'foobar': [1, 2]}}

आप एक्सएमएल में डेटा क्रमबद्ध करने के लिए एक ही प्रोसेसर का भी उपयोग कर सकते हैं

data = {'bar': {
    'foobar': [7, 3, 21, 16, 11]
}}

xml.serialize_to_string(processor, data, indent='    ')

जो निम्नलिखित आउटपुट उत्पन्न करता है

<?xml version="1.0" ?>
<foo>
    <bar>
        <type foobar="7"/>
        <type foobar="3"/>
        <type foobar="21"/>
        <type foobar="16"/>
        <type foobar="11"/>
    </bar>
</foo>

यदि आप शब्दकोशों के बजाय ऑब्जेक्ट्स के साथ काम करना चाहते हैं, तो आप प्रोसेसर को ऑब्जेक्ट्स से डेटा को बदलने के लिए भी परिभाषित कर सकते हैं।

import declxml as xml

class Bar:

    def __init__(self):
        self.foobars = []

    def __repr__(self):
        return 'Bar(foobars={})'.format(self.foobars)


xml_string = """
<foo>
   <bar>
      <type foobar="1"/>
      <type foobar="2"/>
   </bar>
</foo>
"""

processor = xml.dictionary('foo', [
    xml.user_object('bar', Bar, [
        xml.array(xml.integer('type', attribute='foobar'), alias='foobars')
    ])
])

xml.parse_from_string(processor, xml_string)

जो निम्नलिखित आउटपुट उत्पन्न करता है

{'bar': Bar(foobars=[1, 2])}




xml comments