Кажется, что ваша настоящая проблема в шаблоне Room
...
<xsl:template match="Room">
<paxes>
<xsl:attribute name="xsi:type">urn:paxesArray</xsl:attribute>
</paxes>
</xsl:template>
... потому что ваш Xsl будет жаловаться, что не распознает пространство имен xsi
.
Чтобы это исправить, вы должны добавить пространство имен ко всем шаблонам, где вы собираетесь его использовать - или добавить его на верхнем уровне внутри <xsl:stylesheet />
.
<xsl:template match="Room" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<paxes>
<xsl:attribute name="xsi:type">urn:paxesArray</xsl:attribute>
</paxes>
</xsl:template>
или - если хотитечтобы сохранить способ добавления ваших атрибутов в шаблон start
<xsl:template match="Room" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<paxes xsi:type="urn:paxesArray">
<xsl:apply-templates />
</paxes>
</xsl:template>
И вы должны изменить применение шаблона Room
внутри rooms
на <apply-templates />
:
<rooms xsi:type="urn:roomArray" soapenc:arrayType="urn:paxesArray">
<xsl:apply-templates />
</rooms>