Где схемы для файлов XML в проекте Android?

Где находятся схемы (схема DTD или XML) для XML-файлов, используемых на Android, таких как AndroidManifest.xml, или макеты?


person pupeno    schedule 03.03.2009    source источник


Ответы (5)


Схемы не существуют в виде файла xml. Схемы зависят от того, какие классы пользовательского интерфейса использует ваша программа. Обсуждение немного лучше здесь.

person Will    schedule 06.03.2009
comment
Что значит написать: xmlns:app="http://schemas.android.com/apk/res/com.example.android.apis" тогда? - person Casebash; 22.04.2010
comment
Я думаю, это просто комментарий :-( . - person Martin; 05.02.2012
comment
@Casebash это означает, что пространство имен app ссылается на ресурсы пакета com.example.android.apis, а затем пытается разрешить атрибут, объявленный, скажем, в attrs.xml вашего приложения. (Кроме того, упомянутые библиотеки находятся в том же пространстве имен вашего приложения). Вам нужно будет определить xsi:schemaLocation, чтобы предоставить пространству имен схему XSD для проверки. Некоторые инструменты имеют внутренние предопределенные сопоставления файлов схемы для определенных пространств имен (xml, xsd, ...). - person TWiStErRob; 07.08.2014
comment
В отличие от этого: у xaml есть свои стандарты и файл схемы: blogs.windows.com/buildingapps/2017/05/19/ - person minus one; 06.02.2018
comment
@ К сожалению, ссылка в вашем ответе сейчас не работает - person user3738870; 05.06.2019
comment
Голосование против, так как предоставленная ссылка считается спам-адресом. Во-вторых, схема — это XML (или старый DTD), целью которого является проверка другого XML. XML-схема существует, но только скрыта. Возможно, именно поэтому сборки Gradle настолько хрупкие, поскольку у них есть абсолютная прихоть изменить схему по своему желанию, поскольку никто не знает, что это такое. - person eigenfield; 22.05.2020

Как правило, определение пространства имен в XML не должно быть реальным существующим URL-адресом, а просто уникальной строкой во всем мире (поэтому предпочитают использовать свои собственные URL-адреса). Конечно, хорошо, если этот URL содержит XML-схему (или, что еще хуже, DTD). Было бы также очень хорошо, если бы кто-то создал схемы ресурсов Android. Я мог бы помочь ему в качестве дипломной работы бакалавра в CS. - Проф. Солимози, Берлин

person Prof. Solymosi    schedule 14.02.2012
comment
Вы имеете в виду, что URI - это просто символ, возможно, предназначенный только для собственного синтаксического анализатора? если нам нужен файл схемы DTD для проверки или завершения, мы должны написать его сами? - person fatfatson; 16.03.2019
comment
Вы не можете написать по своему желанию содержание схемы. Схема представляет собой another XML, который идет рука об руку для проверки the XML. Старые XML-схемы не в формате XML, а в DTD, я думаю, что сегодня мы больше не используем DTD. - person eigenfield; 22.05.2020

XML-схема, похоже, не задокументирована, но здесь есть полезный список всех объектов макета и их разрешенных атрибутов:

http://developer.android.com/reference/android/R.styleable.html#lfields

person Paul    schedule 21.11.2012

Искал ту же тему, чтобы узнать, как Android-студия выполняет автозаполнение и прочее в XML, и я тоже надеялся найти какой-нибудь XSD или что-то в этом роде, но:

В Android мы используем смесь статических и динамических определений DOM:

1-Некоторые файлы определяются с использованием классов и аннотаций, см., например, манифест (примечание: для получения правильной информации вам, скорее всего, следует использовать объединенный манифест, но это выходит за рамки этого документа).

2. Другая информация считывается из ресурсов с использованием соглашений об именах для поиска стилей, содержащих атрибуты, относящиеся к данному тегу XML. Например, если мы распознаем тег как соответствующий подклассу View в файле макета (например, «TextView»), мы находим соответствующий стиль, смотрим на содержащиеся в нем атрибуты и регистрируем расширения DOM для данного тега, которые соответствуют этим ресурсам attr. . См. AttributeProcessingUtil и SubtagsProcessingUtil для кода, который считывает стили, и AndroidDomExtender для расширения, которое подключается к системе DOM.

3-Иногда стиль определяется статически, но атрибуты считываются динамически, чтобы оставаться в курсе версии платформы, используемой в проекте. Это делается с помощью аннотации @Styleable.

https://android.googlesource.com/platform/tools/adt/idea/+/refs/heads/mirror-goog-studio-master-dev/android/src/org/jetbrains/android/dom/README.md

Например, вот как в исходных кодах Android-студии определяется форма XML, которую можно рисовать:

@DefinesXml
@Styleable("GradientDrawable")
public interface Shape extends DrawableDomElement {
  @Styleable("DrawableCorners")
  List<DrawableDomElement> getCornerses();

  @Styleable("GradientDrawableGradient")
  List<DrawableDomElement> getGradients();

  @Styleable("GradientDrawablePadding")
  List<DrawableDomElement> getPaddings();

  @Styleable("GradientDrawableSize")
  List<DrawableDomElement> getSizes();

  @Styleable("GradientDrawableSolid")
  List<DrawableDomElement> getSolids();

  @Styleable("GradientDrawableStroke")
  List<DrawableDomElement> getStrokes();
}

Стили (например, GradientDrawablePadding) определены в файле android attrs.xml.

https://android.googlesource.com/platform/tools/adt/idea/+/refs/heads/mirror-goog-studio-master-dev/android/src/org/jetbrains/android/dom/drawable/Shape.java

person navid    schedule 26.04.2020

Если у вас возникла проблема с распознаванием такой схемы, как http://schemas.android.com/apk/res/android, вы можете добавить ее в разделе Настройки (или Настройки) › Языки и платформы. › Схемы и DTD. Нажмите знак + в разделе «Игнорируемые схемы и DTD» и добавьте URL-адрес схемы. Вы больше не должны получать ошибки кода/предупреждения.

person Al.    schedule 11.05.2021