DTD
Apple · 1.0
Apple property list 1.0
plist (Info.plist, launchd, configuration profiles)
XML property lists: Info.plist of apps, launchd jobs, configuration profiles.
About
Property lists hold dictionaries, arrays, strings, numbers, dates and data. The DTD catches a key without a value, a stray element or a typo in a type name.
Good to know
- Binary plists are not XML; convert them first with plutil -convert xml1.
- Required keys (CFBundleIdentifier and so on) are an Xcode and App Store concern and are not checked by the DTD.
- The example is by xmlvalid.com.
Example document
Info.plist · 738 B · valid against this schema
In CI and from code
The same schema by its name, apple-plist-1.0, through the API.
npx @xmlvalid/cli validate "**/*.xml" --schema apple-plist-1.0
- uses: xmlvalid/validate-action@v1
with:
files: "**/*.xml"
schema: apple-plist-1.0
api-key: ${{ secrets.XMLVALID_API_KEY }}
curl https://xmlvalid.com/api/v1/validations \
-H "Authorization: Bearer $XMLVALID_API_KEY" \
-F document={{ $schema->example ?? 'document.xml' }} -F schema=apple-plist-1.0
Free accounts get 100 API validations a month. On Pro, a URL monitor can check a published document against this schema every hour and email you when it breaks. More CI setups