Проблема с этой строкой ....
<xsl:apply-templates select="DataRow[not(DataRow/parentid_visio)]"/>
Это говорит "Выберите любой DataRow
, который не имеет DataRow/parentid_visio
в качестве ребенка".Но ни один DataRow
в вашем XML даже не имеет DataRow
как дочерний элемент, поэтому он выбирает все строки.
Итак, вы можете изменить его на этот, поэтому он просто проверяет parentid_visio
какchild:
<xsl:apply-templates select="DataRow[not(parentid_visio)]"/>
Но это не сработает, потому что это проверяет существование узла, независимо от того, есть ли у этого текста текст или нет, поэтому <parentid_visio></parentid_visio>
возвращает true, и строк нетвыбраны.
Вы должны сделать это, чтобы также проверить пустые parentid_visio
узлы и те, которые не существуют
<xsl:apply-templates select="DataRow[not(parentid_visio) or parentid_visio = '']"/>
Или это будет делать то же самое
<xsl:apply-templates select="DataRow[not(parentid_visio != '')]"/>
Или, если бы вы знали, что parentid_visio
всегда будет существовать ...
<xsl:apply-templates select="DataRow[parentid_visio = '']"/>
(В этом последнем случае, если parentid_visio
не существует в XML, то parentid_visio = ''
возвращает falseи поэтому строка не будет выделена).