Изменение цитирования слова XSL

Я нашел шаблон цитирования *.xsl для Word 2010. Это почти то, что мне нужно, мне просто нужно сделать несколько изменений.

Сначала это отображается на выходе, например. [Str17], но он должен показывать [STR-17]. Кроме того, он показывает библиографию не в таблице с вкладкой между TAG и записью.

e.g.

выглядит так

но мне нужно

Мне нужен этот формат

Я просто не могу настроить xsl под свои нужды. Я уже некоторое время пытаюсь найти любой другой файл xsl, но безуспешно. Такой вид цитирования довольно распространен в инженерии, поэтому я уверен, что я не единственный, кто ищет решение.

Я думаю, что для первой части моего вопроса о стиле тега соответствующий код:

 <xsl:if test="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:FirstAuthor">
                        <!-- hier wird die Klammer [ angezeigt -->
                        <xsl:call-template name="templ_prop_ISO690_GeneralOpen"/>
                    </xsl:if>

                    <xsl:if test="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:PagePrefix">

                    <xsl:value-of select="/b:Citation/b:PagePrefix"/>

                    </xsl:if>

                    <!-- <xsl:value-of select="$displayAuthor" /> nicht den Author anzeigen sondern den Tag-->
                    <xsl:value-of select="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:Source/b:Tag" />

                    <xsl:if test="string-length($displayTitle) > 0">
                        <xsl:if test="string-length($displayAuthor) > 0">
                            <xsl:call-template name="templ_prop_ListSeparator"/>


                        </xsl:if>
                        <xsl:value-of select="$displayTitle"/>
                    </xsl:if>

                    <xsl:if test="string-length($year) > 0">
                        <xsl:if test="string-length($displayTitle) > 0">
                            <xsl:call-template name="templ_prop_ListSeparator"/>
                        </xsl:if>   
                        <!-- <xsl:value-of select="$year"/> nicht das Jahr anzeigen lassen -->
                    </xsl:if>


                    <xsl:if test="string-length($author0) = 0 and string-length($title0) = 0 and string-length($year0) = 0">
                        <xsl:value-of select="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:Source/b:Tag"/>
                    </xsl:if>


                    <xsl:if test="string-length($volume) > 0 or string-length($pages) > 0">
                        <xsl:if test="string-length($displayAuthor) > 0 or string-length($displayTitle) > 0 or string-length($year) > 0">
                            <xsl:call-template name="templ_prop_Space"/>
                        </xsl:if>           

                        <xsl:choose>
                            <xsl:when test="string-length($volume) > 0 and string-length($pages) > 0">
                                <xsl:value-of select="$volume"/>
                                <xsl:call-template name="templ_prop_Enum"/>
                                <xsl:value-of select="$pages"/>
                            </xsl:when>
                            <xsl:when test="string-length($volVolume) > 0">
                                <xsl:value-of select="$volVolume"/>
                            </xsl:when>
                            <xsl:when test="string-length($ppPages) > 0">
                                <xsl:value-of select="$ppPages"/>
                            </xsl:when>
                        </xsl:choose>
                    </xsl:if>

                    <xsl:if test="/b:Citation/b:PageSuffix">
                        <xsl:value-of select="/b:Citation/b:PageSuffix"/>
                    </xsl:if>

                    <xsl:if test="/b:Citation/b:LastAuthor">
                        <!-- hier wird die Klammer ] angezeigt -->
                        <xsl:call-template name="templ_prop_ISO690_GeneralClose"/>
                    </xsl:if>

                    <xsl:if test="not(/b:Citation/b:LastAuthor)">
                        <xsl:call-template name="templ_prop_GroupSeparator"/>
                    </xsl:if>

Я попытался добавить - в этой части, но он просто показывает дефис в начале или в конце. Преобразование букв в верхний регистр для меня все еще волшебство. не нашел нужный раздел.

Для второй части я загружу файл, так как он довольно длинный, и я не хочу публиковать весь код. Не могу сделать это с работы, так как любая возможность загрузки блокируется моей компанией.


person McMo    schedule 27.10.2017    source источник


Ответы (1)


Сначала я бы рекомендовал вам использовать шаблоны, например:

<xsl:template name="Citation">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template name="FirstAuthor">
    <xsl:call-template name="templ_prop_ISO690_GeneralOpen"/>
</xsl:template>

<xsl:template name="PagePrefix">
    <xsl:value-of select="."/> 
</xsl:template>
...

Это не обязательно, но лучше стиль кода. Ваш код нечитаем для меня, поэтому я отвечу на ваш вопрос так: - Для преобразования текста в верхний регистр

<xsl:value-of select="upper-case(//some-xpath)"/>
  • Для вставки таблиц используйте такой код:

    Текст Текст

Если вы ожидаете лучшего ответа, опубликуйте какой-нибудь читаемый код

person Christian Mosz    schedule 27.10.2017
comment
Я понимаю. простите за это. Это код, который я действительно нашел, и я хотел его настроить. Не понял, что это нечитабельно. - person McMo; 27.10.2017
comment
По какой-то странной причине он не показывает код таблицы: ‹fo:table› ‹fo:table-body› ‹fo:table-row› ‹fo:table-cell width=30%›‹fo:block›Text‹/ fo:block›‹/fo:table-cell› ‹fo:table-cell›‹fo:block›Text‹/fo:block›‹/fo:table-cell› ‹/fo:table-row› ‹/fo :table-body› ‹/fo:table› Просто опубликуйте его снова после того, как вы немного его отрефакторите :) - person Christian Mosz; 27.10.2017