I have an XML document something like :::
<?xml version='1.0' encoding='utf-8'?> <?mso-application progid='Excel.Sheet'?> <Workbook xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='urn:schemas-microsoft-com:office:spreadsheet'> <Worksheet ss:Name='Worksheet1'> <Table> <Column ss:Width='100'></Column> <Row> <Cell ss:Index='1' ss:StyleID='headerStyle'> <Data ss:Type='String'>Submitted By</Data> </Cell> </Row> <Row> <Cell ss:Index='1' ss:StyleID='alternatingItemStyle'> <Data ss:Type='String'>Value1-0</Data> </Cell> </Row> </Table> <AutoFilter xmlns='urn:schemas-microsoft-com:office:excel' x:Range='R1C1:R1C5'></AutoFilter> </Worksheet> </Workbook>
The problem is when trying to select Rows with
<xsl:for-each select='//Row'> <xsl:copy-of select='.'/> </xsl:for-each>
It is not matching. I removed all of the name-spacing and it works fine. So, how do I get the ‘select’ to match Row?
Declare a namespace prefix for the namespace in your XSLT and then
selectusing that prefix:This usually results in XPaths that are easy to read. However, XSLT/XPath tools generate the following, equivalent code: