Где находятся схемы (схема DTD или XML) для XML-файлов, используемых на Android, таких как AndroidManifest.xml, или макеты?
Где схемы для файлов XML в проекте Android?
Ответы (5)
Схемы не существуют в виде файла xml. Схемы зависят от того, какие классы пользовательского интерфейса использует ваша программа. Обсуждение немного лучше здесь.
xmlns:app="http://schemas.android.com/apk/res/com.example.android.apis"
тогда?
- person Casebash; 22.04.2010
app
ссылается на ресурсы пакета com.example.android.apis
, а затем пытается разрешить атрибут, объявленный, скажем, в attrs.xml
вашего приложения. (Кроме того, упомянутые библиотеки находятся в том же пространстве имен вашего приложения). Вам нужно будет определить xsi:schemaLocation
, чтобы предоставить пространству имен схему XSD для проверки. Некоторые инструменты имеют внутренние предопределенные сопоставления файлов схемы для определенных пространств имен (xml, xsd, ...).
- person TWiStErRob; 07.08.2014
Как правило, определение пространства имен в XML не должно быть реальным существующим URL-адресом, а просто уникальной строкой во всем мире (поэтому предпочитают использовать свои собственные URL-адреса). Конечно, хорошо, если этот URL содержит XML-схему (или, что еще хуже, DTD). Было бы также очень хорошо, если бы кто-то создал схемы ресурсов Android. Я мог бы помочь ему в качестве дипломной работы бакалавра в CS. - Проф. Солимози, Берлин
another
XML, который идет рука об руку для проверки the
XML. Старые XML-схемы не в формате XML, а в DTD, я думаю, что сегодня мы больше не используем DTD.
- person eigenfield; 22.05.2020
XML-схема, похоже, не задокументирована, но здесь есть полезный список всех объектов макета и их разрешенных атрибутов:
http://developer.android.com/reference/android/R.styleable.html#lfields
Искал ту же тему, чтобы узнать, как Android-студия выполняет автозаполнение и прочее в XML, и я тоже надеялся найти какой-нибудь XSD или что-то в этом роде, но:
В Android мы используем смесь статических и динамических определений DOM:
1-Некоторые файлы определяются с использованием классов и аннотаций, см., например, манифест (примечание: для получения правильной информации вам, скорее всего, следует использовать объединенный манифест, но это выходит за рамки этого документа).
2. Другая информация считывается из ресурсов с использованием соглашений об именах для поиска стилей, содержащих атрибуты, относящиеся к данному тегу XML. Например, если мы распознаем тег как соответствующий подклассу View в файле макета (например, «TextView»), мы находим соответствующий стиль, смотрим на содержащиеся в нем атрибуты и регистрируем расширения DOM для данного тега, которые соответствуют этим ресурсам attr. . См. AttributeProcessingUtil и SubtagsProcessingUtil для кода, который считывает стили, и AndroidDomExtender для расширения, которое подключается к системе DOM.
3-Иногда стиль определяется статически, но атрибуты считываются динамически, чтобы оставаться в курсе версии платформы, используемой в проекте. Это делается с помощью аннотации @Styleable.
Например, вот как в исходных кодах 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.
Если у вас возникла проблема с распознаванием такой схемы, как http://schemas.android.com/apk/res/android
, вы можете добавить ее в разделе Настройки (или Настройки) › Языки и платформы. › Схемы и DTD. Нажмите знак + в разделе «Игнорируемые схемы и DTD» и добавьте URL-адрес схемы. Вы больше не должны получать ошибки кода/предупреждения.