( TUTORIAL ) XML Patch Guide этот пост - ознакомительный перевод поста...
X Rebirth
x-rebirth.x3tc.net
X Rebirth  
 

Форум X Rebirth:


    10.06 Вопросница по X-Rebirth
    17.01 X Rebirth Lost Sectors Mod
    17.04 Вопросница по скриптам и модам для X-Rebirth
    15.09 Собрание скриптов и модов для X Rebirth
    21.09 Технические проблемы X Rebirth
    13.09 Мод "Меню строительства кораблей" (релиз)
    29.08 Захват и абордаж в X-Rebirth
    04.02 Русский перевод X-Rebirth
    19.10 Патчи, фиксы, ченджлоги
    04.09 Планы, дела, с кем воюем, что имеем, сколько денег, часы игры и т.д.

Форумы X:


    15.06 Вопросница по чистой X3:AP
    14.06 Вопросы по скриптам и модам для X3: Albion Prelude
    07.06 X3: Farnham's Legacy
    20.05 Дневники Пилота
    20.05 Вопросница по чистой игре X3:TC
    15.04 Прохождение X3: Farnham's Legacy.
    12.04 ПОЗДРАВЛЯЛКИ
 

( TUTORIAL ) XML Patch Guide этот пост - ознакомительный перевод поста...


X Rebirth / Форум / Скрипты и моды X Rebirth / Инструкция по моддингу на сайте Egosoft

Инструкция по моддингу на сайте Egosoft
(http://x-rebirth.x3tc.net/forum/?tid=13)
Автор: i-tolik
(20.11.2013 15:38:52)

 ( TUTORIAL ) XML Patch Guide
этот пост - ознакомительный "перевод" поста с сайта Егософт.

Гайд XML патчей - "урывков".

Вот Я ознакомился с стандартом  IETF XML Patch и хотел бы поделиться своими выводами о возможностях XML-патчей. Примеры получены из modding guide см. перевод выше, IETF spec и xmlpatch library.
Каждый XML-файл патчей должен иметь строку заголовок -- diff -- root -- tag:

 
<?xml version="1.0" encoding="utf-8"?>

 <diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

    ...

 </diff>
 


Есть три типа операторов, которые могут выполняться:
add        - добавить блок XML текста
replace  - заменить блок XML текста
remove  - удалить блок XML текста

  После выбора одного из них, блок XML, что должен быть изменен, необходимо выбрать с помощью команды "SEL". Аргумент "SEL" должны однозначно описать один узел.

  Существует параметр мульти-узлового выбора (MSEL), который не входит в IETF спецификацию, но поддерживается библиотекой xmlpatch. Я не знаю, X -иксы поддерживает его, вот, так что я рекомендую делать многократные записи вместо множественного выбора.

Основные примеры 

Все они будут использовать этот основной исходный файл:

 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="1"/>
     <foo a="2"/>
   </bar>
 </root>
 


Оператор - Add:

Patch (патч)
 
<add sel="root/bar">
     <foo a="3"/>
   </add>
 


Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="1"/>
     <foo a="2"/>
     <foo a="3"/>
   </bar>
 </root>
 


Оператор - Replace:

Patch (патч)
 
<replace sel="root/bar/foo[@a='1']">
     <foo a="3"/>
   </replace>
 


Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="3"/>
     <foo a="2"/>
   </bar>
 </root>
 


Оператор - Remove:

Patch (патч)
 
<remove sel="root/bar/foo[@a='1']"/>
 


Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="2"/>
   </bar>
 </root>
 


Расширенные параметры

Для оператора add есть три атрибута, которые могут использоваться:

sel
type
pos


Для оператора replace есть только один атрибут:

sel

Для оператора remove есть два атрибута:

sel 
ws


Вот некоторые примеры.

Add an attribute - (добавить атрибут)

Patch (патч)
 
<add sel="root/bar" type="@cat">3</add>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar cat="3">
     <foo a="1"/>
     <foo a="2"/>
   </bar>
 </root>
 

Add something before - (добавить что-то прежде)

Patch (патч)
 
<add sel="root/bar" pos="before">
   <foo a="3"/>
</add>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <foo a="3"/>
   <bar>
     <foo a="1"/>
     <foo a="2"/>
   </bar>
 </root>
 

Add something as first child node - (добавить что-то как первый дочерний узел)

Patch (патч)
 
<add sel="root/bar" pos="prepend">
  <foo a="3"/>
</add>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="3"/>
     <foo a="1"/>
     <foo a="2"/>
   </bar>
 </root>
 

Add something as last child node (default) - (добавить что-то как последний дочерний узел (по умолчанию))

Patch (патч)
 
<add sel="root/bar">
  <foo a="3"/>
</add>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="1"/>
     <foo a="2"/>
     <foo a="3"/>
   </bar>
 </root>
 

Wildcard Add #1 - (добавить после аргумента)

Patch (патч)
 
<add sel="*/bar">
  <foo a="3"/>
</add>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="1"/>
     <foo a="2"/>
     <foo a="3"/>
   </bar>
 </root>
 

Wildcard Add #2 - (добавить после аргумента)
 
Patch (патч)
 
<add sel="*/foo[@a='1']">
  <cat a="3"/>
</add>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="1">
       <cat a="3"/>
     </foo>
     <foo a="2"/>
   </bar>
 </root>
 

Wildcard Replace - (заменять)

Patch (патч)
 
<replace sel="*/foo[@a='1']">
   <cat a="3"/>
 </replace>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <cat a="3"/>
     <foo a="2"/>
   </bar>
 </root>
 

Replace an attribute - (заменять атрибуты)

Patch (патч)
 
<replace sel="root/bar/foo[@a='1']/@a">3</replace>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="3"/>
     <foo a="2"/>
   </bar>
 </root>
 

Remove an attribute - (удалить атрибут)

Patch (патч)
 
<remove sel="root/bar/foo[@a='1']/@a"/>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo/>
     <foo a="2"/>
   </bar>
 </root>
 

Remove node with plaintext (a.k.a. whitespace text) - (Удалить узел из текста
"a.k.a пробелы текст")

Source(исходный текст)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="1">Some text here</foo>
     <foo a="2"/>
   </bar>
 </root>
 

Patch (патч)
 
<remove sel="root/bar/foo[@a='1']" ws="after"/>
 

Result (резултат)
 
<?xml version="1.0" encoding="UTF-8"?>
 <root>
   <bar>
     <foo a="2"/>
   </bar>
 </root>
 

дерево темы → Инструкция по моддингу на сайте Egosoft Инструкция по моддингу на сайте Egosoft »

При полном или частичном использовании материалов сайта активная (прямая) ссылка на x-rebirth.x3tc.net обязательна.
Внимание! На сайте строго запрещается затрагивать/обсуждать/ссылаться на всевозможные незаконные программы и способы, позволяющие обойти/взломать (и т.п.) защиту игры X Rebirth - т.н. крэки (crack, а также: nocd, nodvd и другие). Attention! On this site forbidden any discussions of crack programs for X Rebirth (any cracks, nocd, nodvd etc).