Поскольку пространство имен-uri для пространства имен по умолчанию - это временная метка - это означает, что она потенциально различна для каждого автоматически сгенерированного документа, нет способа определить «это» пространство имен в коде XSLT .
Существует другой способ - не использовать нефиксированные имена напрямую, а сравнивать их с name()
элемента:
/*/*[name()='AdminReport']/@ID
правильно выбираетID
атрибут любого элемента с именем «AdminReport» (относительно того, к какому пространству имен он принадлежит), который является дочерним элементом верхнего элемента XML-документа.
Вот полный пример XSLT :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select=
"/*/*[name()='AdminReport']/@ID"/>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование применяется к предоставленному XML-документу :
<AdminReports xmlns="30/11/2011 09:25:58">
<AdminReport ID="1">
</AdminReport >
</AdminReports>
требуемый результат correst :
1