Хорошо, я понимаю, почему вы хотите иметь правила в простом xml-файле, а не в полноценной таблице стилей xsl, но вы просто пропускаете шаг.
Вам необходимо создать таблицу стилей xsl, которая преобразует документ вашего правила xml в таблицу стилей xsl, которую вы затем примените к исходному XML.
Хитрость заключается в том, что пространства имен не запутываются из-за сочетания примененных правил xsl и сгенерированных правил xsl.
<?xml version="1.0" ?>
<xsl:stylesheet
xmlns="YOUR_NAMESPACE_HERE"
xmlns:output="http://www.w3.org/1999/XSL/Transform"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output
method="xml"
indent="yes"
media-type="text/xsl" />
<xsl:template match="/">
<output:stylesheet version="2.0">
<xsl:apply-templates />
</output:stylesheet>
</xsl:template>
<xsl:template match="document[@object]">
<output:template match="document[@object='{@object}']">
<output:copy>
<xsl:apply-templates />
</output:copy>
</output:template>
</xsl:template>
<xsl:template match="field[@name]">
<output:if test="field[@name='{@name}']">
<output:copy-of select="field[@name='{@name}']" />
</output:if>
</xsl:template>
</xsl:stylesheet>
Я предполагал, что вы будете использовать один и тот же атрибут объекта документа в правилах и в самих документах (это намного проще, imo).
Итак, вы управляете своим документом правил через таблицу стилей выше. В результате получается новая таблица стилей xsl, которая в точности соответствует тому, что вы описываете в своем документе правила xml. Затем вы применяете эту результирующую таблицу стилей к исходному документу, и вы должны получить ожидаемый результат.