diff --git a/examples/xmlpatterns/xmlpatterns.pro b/examples/xmlpatterns/xmlpatterns.pro
index ca63f69380e7277daccf44670310cc85b682665d..bfc3a3e6cae6f50e730148ba39368a5ae4e73cdf 100644
--- a/examples/xmlpatterns/xmlpatterns.pro
+++ b/examples/xmlpatterns/xmlpatterns.pro
@@ -1,6 +1,11 @@
 TEMPLATE = subdirs
 SUBDIRS += xquery
-qtHaveModule(widgets): SUBDIRS += filetree schema recipes
+qtHaveModule(widgets) {
+    SUBDIRS += recipes
+
+    load(qfeatures)
+    !contains(QT_DISABLED_FEATURES, xmlschema): SUBDIRS += filetree schema
+}
 
 EXAMPLE_FILES = \
     shared
diff --git a/src/xmlpatterns/api/api.pri b/src/xmlpatterns/api/api.pri
index 82d1c03fd9c88e2d5bcee0eddb469967a19bcf1b..2192d829a853361bce3f23ee444459c13be0c61e 100644
--- a/src/xmlpatterns/api/api.pri
+++ b/src/xmlpatterns/api/api.pri
@@ -23,10 +23,6 @@ HEADERS += $$PWD/qabstractxmlforwarditerator_p.h \
     $$PWD/qxmlquery_p.h \
     $$PWD/qxmlresultitems.h \
     $$PWD/qxmlresultitems_p.h \
-    $$PWD/qxmlschema.h \
-    $$PWD/qxmlschema_p.h \
-    $$PWD/qxmlschemavalidator.h \
-    $$PWD/qxmlschemavalidator_p.h \
     $$PWD/qxmlserializer.h \
     $$PWD/qxmlserializer_p.h \
     $$PWD/qcoloringmessagehandler_p.h \
@@ -50,9 +46,17 @@ SOURCES += $$PWD/qvariableloader.cpp \
     $$PWD/qxmlnamepool.cpp \
     $$PWD/qxmlquery.cpp \
     $$PWD/qxmlresultitems.cpp \
-    $$PWD/qxmlschema.cpp \
-    $$PWD/qxmlschema_p.cpp \
-    $$PWD/qxmlschemavalidator.cpp \
     $$PWD/qxmlserializer.cpp \
     $$PWD/qcoloringmessagehandler.cpp \
     $$PWD/qcoloroutput.cpp
+
+load(qfeatures)
+!contains(QT_DISABLED_FEATURES, xmlschema) {
+    HEADERS += $$PWD/qxmlschema.h \
+        $$PWD/qxmlschema_p.h \
+        $$PWD/qxmlschemavalidator.h \
+        $$PWD/qxmlschemavalidator_p.h
+    SOURCES += $$PWD/qxmlschema.cpp \
+        $$PWD/qxmlschema_p.cpp \
+        $$PWD/qxmlschemavalidator.cpp
+}
diff --git a/src/xmlpatterns/xmlpatterns.pro b/src/xmlpatterns/xmlpatterns.pro
index 49543b61c23bd5548094d8036d31bd977b0f464f..7aac0c9a79041f5342863f91ec335922893a4865 100644
--- a/src/xmlpatterns/xmlpatterns.pro
+++ b/src/xmlpatterns/xmlpatterns.pro
@@ -20,7 +20,11 @@ include($$PWD/iterators/iterators.pri)
 include($$PWD/janitors/janitors.pri)
 include($$PWD/parser/parser.pri)
 include($$PWD/projection/projection.pri)
-include($$PWD/schema/schema.pri)
+
+load(qfeatures)
+!contains(QT_DISABLED_FEATURES, xmlschema) {
+    include($$PWD/schema/schema.pri)
+}
 include($$PWD/type/type.pri)
 include($$PWD/utils/utils.pri)
 include($$PWD/qobjectmodel/qobjectmodel.pri, "", true)
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 8f0a1e7e2a9a91c31b636ac94f29e0c263627aca..df80f80068afb6aca2405e05260f266093f90903 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -21,19 +21,23 @@ SUBDIRS=\
            qxmlnodemodelindex           \
            qxmlquery                    \
            qxmlresultitems              \
-           qxmlschema                   \
-           qxmlschemavalidator          \
            qxmlserializer               \
            xmlpatterns                  \
            xmlpatternsdiagnosticsts     \
-           xmlpatternsschema            \
-           xmlpatternsschemats          \
            xmlpatternssdk               \
            xmlpatternsvalidator         \
            xmlpatternsview              \
            xmlpatternsxqts              \
            xmlpatternsxslts             \
 
+load(qfeatures)
+!contains(QT_DISABLED_FEATURES, xmlschema) {
+    SUBDIRS += qxmlschema               \
+               qxmlschemavalidator      \
+               xmlpatternsschema        \
+               xmlpatternsschemats
+}
+
 xmlpatternsdiagnosticsts.depends = xmlpatternssdk
 xmlpatternsview.depends = xmlpatternssdk
 xmlpatternsxslts.depends = xmlpatternssdk
diff --git a/tools/tools.pro b/tools/tools.pro
index 121bed8d8817c2182015ce266c346574ab24e6e3..92bbaca01cc5887c6f1ec865be1bda2dc2dc6262 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
@@ -1,2 +1,9 @@
 TEMPLATE = subdirs
-!android|android_app: SUBDIRS +=  xmlpatterns xmlpatternsvalidator
+
+load(qfeatures)
+!android|android_app {
+    SUBDIRS += xmlpatterns
+    !contains(QT_DISABLED_FEATURES, xmlschema) {
+        SUBDIRS += xmlpatternsvalidator
+    }
+}