Applies to: Documented XSP schema; user data playlists/video directory
The useful distinctions
- XSP files are plain-text XML in userdata/playlists.
- Video smart playlists belong in the video subfolder.
- XSP tags and attributes are case-sensitive.
- A playlist manager may need to be exited and reopened to show a new file.
Use text when exact review matters
A file-based playlist is useful when you want to see exactly what changed between two versions of a browsing rule. Keep the definition small enough to review without relying on a screenshot of several dialog boxes. The example uses a tag that you control, so the main dependency is visible in the text. It deliberately avoids a long collection of conditions that would hide the reason an item was selected.
Treat the XML as configuration
Save the file with its real extension and preserve the spelling of element and attribute names. Keep a previous working copy before editing. A text editor can help identify malformed XML, but well-formed XML alone does not establish that a field or value matches the library. Check one known record after each meaningful change, especially when changing the media type or matching mode.
Review a change through outcomes
Suppose the list should move from all workshop movies to a title-sorted subset. Change one rule or ordering choice at a time and compare the visible result with a short expected set. This produces a reviewable configuration history. Store the definition with your other Kodi configuration notes rather than treating it as an unexplained file that can be discarded during a reinstall.
A focused way to proceed
- Back up an existing playlist if replacing it.
- Create the supplied XML in a .xsp file.
- Save it under the active profile userdata/playlists/video folder.
- Re-enter the playlist manager and open the new list.
- Check a known matching title before modifying more rules.
Worked example · synthetic
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smartplaylist type="movies">
<name>Workshop movies</name>
<match>all</match>
<rule field="tag" operator="is"><value>Workshop</value></rule>
<order direction="ascending">title</order>
</smartplaylist>Read the comparison
An empty result may be a correct query against incomplete tags rather than a parsing failure.
When to stop or ask for help
If it does not load, verify the active profile path, extension, XML validity and the installed version’s supported fields.