Ошибка: узлы атрибутов и пространств имен не могут быть добавлены к родительскому элементу

Я получаю следующую ошибку при попытке выполнить преобразование:

Узлы атрибутов и пространств имен не могут быть добавлены к родительскому элементу после того, как текст, комментарий, числовой элемент или узел подэлемента уже добавлены.

Ниже приведена функция, которую я использую для преобразования

Public Function Transform(ByVal doc As XmlNode, ByVal stylesheet As XmlDocument) As String
    Dim trans As XslCompiledTransform = New XslCompiledTransform()
    trans.Load(stylesheet)
    Dim settings As XmlWriterSettings = New XmlWriterSettings()
    settings.OmitXmlDeclaration = False
    settings.ConformanceLevel = ConformanceLevel.Fragment
    settings.CloseOutput = False

    Dim writer As System.IO.StringWriter = New System.IO.StringWriter()
    trans.Transform(doc, XmlWriter.Create(writer, settings))

    Return writer.ToString()
End Function

Ниже приведен код нарушения в моем xsl

<xsl:template name="Calendar">
    <xsl:variable name="dateRef"><xsl:value-of select="@dateRef"/></xsl:variable>
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td style="padding-top: 10px">
                        <span style="position:absolute; display:none" fieldName="{//Form/@name}.{Name}" initialDate="{@initialDate}" futureBound="{@futureBound}" pastBound="{@pastBound}">
                            <xsl:attribute name="ID">date<xsl:value-of select="$dateRef"/></xsl:attribute>
                        </span>
                        <!-- When I comment out the line below my page loads, but the intended content doesn't -->
                        <xsl:attribute name="ID">date<xsl:value-of select="$dateRef"/></xsl:attribute>
                        <xsl:call-template name="calendarContents"/>
                </td>
            </tr>
        </table>
</xsl:template>

person CBC_NS    schedule 22.09.2016    source источник


Ответы (1)


Проблема. Как указано в ошибке, "текст, комментарий, pi или узел вложенный элемент" не может находиться между xsl:attribute и элементом. получение атрибута.

Решение. Переместите оператор xsl:attribute вверх, чтобы он был непосредственно под элементом td, к которому вы хотите добавить атрибут.

person kjhughes    schedule 22.09.2016