replace वास्तव में क्या बदलता है#

XML में पंक्ति 15 बदलने जैसी कोई क्रिया नहीं है; पंक्ति-विराम केवल स्वरूपण है। sel चयनकर्ता बदलाव का दायरा तय करता है। हर replace क्रिया को ठीक एक नोड चुनना चाहिए। हर लक्ष्य के लिए अलग क्रिया लिखें।

चयन बदली जाने वाली सामग्री बची रहने वाली सामग्री
/items/item[@id='a']/@enabled enabled विशेषता का मान अन्य विशेषताएँ और चाइल्ड नोड
/items/item[@id='a']/label/text() label के अंदर का टेक्स्ट नोड label तत्व और उसकी विशेषताएँ
/items/item[@id='a'] पूरा item तत्व समान स्तर के तत्व; चुने हुए item की पुरानी विशेषताएँ और चाइल्ड नोड हट जाते हैं
/items मूल तत्व और उसकी सामग्री केवल चुने हुए मूल तत्व के बाहर की सामग्री; यह व्यापक बदलाव है

diff, लोड होते समय लागू होने वाली XML क्रियाओं की सूची है। replace उनमें से एक क्रिया है। subst_ द्वारा पूरी फ़ाइल की अदला-बदली अलग तंत्र है। एक्सटेंशन में समान नाम की फ़ाइल होने से पूरी फ़ाइल बदलना तय नहीं होता; तालिकाएँ प्रविष्टियाँ मिला सकती हैं। देखें ext_, subst_ और अनपैक की गई फ़ाइलें.

मूल शैक्षिक दस्तावेज़#

यह काल्पनिक डेटा है। नीचे का हर उदाहरण मूल दस्तावेज़ पर अलग से लागू करें, पिछले उदाहरण के बाद नहीं। उदाहरण संरचना समझाते हैं; इन्हें अलग से गेम में नहीं चलाया गया है।

XML
<items version="1">
  <item id="a" enabled="false">
    <label lang="en">Old name</label>
    <price min="10" max="20" />
  </item>
  <item id="b" />
</items>

केवल एक विशेषता बदलें#

XML
<diff>
  <replace sel="/items/item[@id='a']/@enabled">true</replace>
</diff>

परिणाम: enabled का मान true होता है; label, price, अन्य विशेषताएँ और item b बने रहते हैं। विशेषता पहले से मौजूद होनी चाहिए। नई विशेषता जोड़ने के लिए type="@name" के साथ add उपयोग करें।

तत्व के अंदर का पाठ बदलें#

XML
<diff>
  <replace sel="/items/item[@id='a']/label/text()">New name</replace>
</diff>

परिणाम: label में New name आता है और lang="en" बना रहता है। इससे पूरा चुना हुआ टेक्स्ट नोड बदलता है, केवल उपस्ट्रिंग नहीं। खाली तत्व में टेक्स्ट नोड न भी हो सकता है; मिश्रित सामग्री में कई हो सकते हैं। ठीक एक मिलान की जाँच करें।

तत्व और उसके सभी चाइल्ड नोड बदलें#

XML
<diff>
  <replace sel="/items/item[@id='a']">
    <item id="a" enabled="true">
      <label lang="en">New name</label>
    </item>
  </replace>
</diff>

अपेक्षित दस्तावेज़:

XML
<items version="1">
  <item id="a" enabled="true">
    <label lang="en">New name</label>
  </item>
  <item id="b" />
</items>

price हट जाता है क्योंकि नए item में वह नहीं है। पुराने चाइल्ड नोड अपने आप नहीं बचते। यह बदलाव चुने हुए तत्व के अंदर किसी दूसरे मॉड के परिवर्तन भी मिटा सकता है।

मूल तत्व बदलें#

XML
<diff>
  <replace sel="/items">
    <items version="2">
      <item id="c" />
    </items>
  </replace>
</diff>

अपेक्षित दस्तावेज़:

XML
<items version="2">
  <item id="c" />
</items>

पुराने item a और b पुराने मूल तत्व के साथ हट जाते हैं। इससे संसाधित दस्तावेज़ का XML वृक्ष बदलता है, फ़ाइल के कच्चे बाइट या डिस्क की मूल फ़ाइल नहीं। एक मान बदलने के लिए छोटा लक्ष्य चुनें; मूल तत्व बदलने में सभी आवश्यक डेटा और टकरावों की जाँच चाहिए।

वास्तविक X4 फ़ाइल से जाँचें#

एक्सटेंशन के सापेक्ष पैच का पथ लक्ष्य फ़ाइल तय करता है। अपने संस्करण का डेटा पढ़ें, स्थिर ID खोजें और ठीक एक मिलान जाँचें। क्रियाएँ ऊपर से नीचे चलती हैं; बाद की क्रियाओं को पहले की क्रियाओं के परिणाम दिखते हैं।

शून्य मिलान का अर्थ है लक्ष्य नहीं मिला। कई मिलान सामूहिक बदलाव का निर्देश नहीं हैं। silent संदेश दबाता है, चयनकर्ता ठीक नहीं करता। चयनकर्ता भाषा सीमित है; अपने इंस्टॉलेशन की diff.xsd स्कीमा जाँचें।

प्रभावी XML की तुलना करें, फिर गेम के प्रभाव और लॉग को अलग से जाँचें। ऊपर के उदाहरण X4 लोडर का एमुलेटर नहीं हैं। आगे पढ़ें add, replace और remove एक साथ, जहाज़ के पैच और संगतता.