Вложенная форма XML в ANT build.xml

#xml #ant #syntax #nested-forms

#xml #ant #синтаксис #вложенные формы

Вопрос:

Я новичок как в ANT, так и в XML. Синтаксис XML кажется действительно запутанным. Следующие три структуры «echo» верны в моем ANT.

   <echo message="Hello "/>
  <echo message="Hello "></echo>
  <echo> Hello </echo>
  

но когда я использую «набор файлов»,

 <fileset dir="." includes = "**/*.java" id="myid" />
<fileset dir="." includes = "**/*.java" id="myid2" ></fileset>
  

по-прежнему верны, но

   <fileset> dir="." includes = "**/*.java" id="myid2" </fileset>
  

считаются неправильными ANT:

 The <fileset> type doesn't support nested text data ("dir="." ...="myid2"").
  

Существует ли какое-то общее правило для различения синтаксических различий между заголовками, такими как «набор файлов» и «echo», я имею в виду, как «echo» разрешает вложенные текстовые данные, а «набор файлов» нет?
Спасибо.

Комментарии:

1. Разработчики Ant не предоставляют пользователям никаких схем / DTD, из-за природы Ant — вы можете легко определять новые задачи, типы с их собственными функциями. Таким образом, нет никакой проверки синтаксиса при определении build.xml . Задачи Ant в XML анализируются Java-кодом task, поэтому вы можете узнать, что поддерживается, только прочитав документы / просмотрев исходный код.

Ответ №1:

Авторы echo task разработали ее таким способом двойного назначения. Он может работать с атрибутом «message» или с дочерним текстом. Но другие задачи (fileset на самом деле является типом) не поддерживают такие функции. Просто прочитайте официальную документацию, чтобы знать все варианты использования.