У меня есть следующий xml-файл:
<DataConfiguration
xmlns="http://www.mysite.com/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mysite.com/namespace/DataConfiguration.xsd">
<rule>
<if>
...
</if>
<then>
...
</then>
</rule>
</DataConfiguration>
который я хочу проанализировать, используя следующий xslt:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doc="http://www.mysite.com/namespace"
exclude-result-prefixes="xsi">
<xsl:output omit-xml-declaration="yes"/>
<xsl:output method="text"/>
<xsl:template match = "/">
<xsl:for-each select="//rule">
<xsl:for-each select="if/*">
...
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Xslt работает так, как ожидалось, но когда я добавляю атрибут xmlns к верхнему элементу xml, он не может найти элементы xml. Я видел несколько связанных вопросов на этом сайте, но до сих пор не понял, как решить мою конкретную проблему. Я попытался добавить документ: к выбранному, как предлагалось здесь но это не помогло. Может это потому, что я использую //? Есть ли другой способ выполнить эти запросы?
Любое другое предложение, как это решить?