XSL, где заявление - PullRequest
       9

XSL, где заявление

0 голосов
/ 25 марта 2011

Мне нужна помощь с селектором XSL:

Мне нужен селектор, который будет показывать Заголовок другого списка, где Документ той же строки соответствует полю Имя . Если нет записи, я покажу ссылку для создания новой. Вот что у меня есть:

<xsl:choose>
    <xsl:when test="/dsQueryResponse
                       /Change_Types
                          /Rows
                             /Row
                                /@Document = @Name"/>
        <xsl:value-of select="/dsQueryResponse
                                 /Change_Types
                                    /Rows
                                        /Row
                                           /@Document[
                                              /dsQueryResponse
                                                 /Change_Types
                                                    /Rows
                                                       /Row
                                                          /@Document = @Name
                                           ]"/>
    </xsl:when>
    <xsl:otherwise>
        <!-- Code to show link -->
    </xsl:otherwise>
</xsl:choose>

Если бы кто-нибудь мог указать, где я иду не так, это было бы очень признательно!

Ответы [ 2 ]

2 голосов
/ 26 марта 2011

В отсутствие вашего исходного XML это полное предположение, но я подозреваю, что

@Document = @Name

должно быть

@Document = current()/@Name

в обоих случаях.Если вы действительно не хотите, чтобы атрибуты Document и Name одного и того же элемента имели одинаковое значение.

0 голосов
/ 28 марта 2011

Вот как я это сделал: для @FileLeafRef необходимо было создать переменную, чтобы ее можно было сохранить для проверки внутри for-each.

<xsl:variable name="document" select="@FileLeafRef"/>

<xsl:choose>
<!-- If there is an entry in the 'Tickets' list for this @FileLeafRef -->
<xsl:when test="/dsQueryResponse/Tickets/Rows/Row/@Document = $document">
    <!-- Show it here -->
    <xsl:for-each select="/dsQueryResponse/Tickets/Rows/Row">
        <xsl:if test="@Document = $document">
        <xsl:value-of select="@Title"/>
    </xsl:if>
        </xsl:for-each>
</xsl:when>
<!-- Else, show a link to add a new Ticket with the document auto-populated -->
<xsl:otherwise>
    <xsl:call-template name="addNewItemLink">
        <xsl:with-param name="list" select="'Tickets'"/>
        <xsl:with-param name="document" select="@FileLeafRef"/>
    </xsl:call-template>
</xsl:otherwise>
</xsl:choose>
...