Проблема дублирования информации в XSL - PullRequest
0 голосов
/ 04 сентября 2011

Просто пробую xsl, и у меня есть одна проблема, которая не исчезнет.Мой код таблицы стилей такой:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="Fighter">
    <br/>
    <br/>
    <br/>
    <b>Name </b>    <xsl:value-of select="name"/> <br/>
    <b>AKA</b>      <xsl:value-of select="nickname"/> <br/>
    <b>Age</b>      <xsl:value-of select="age"/> <br/>
    <b>Height</b>       <xsl:value-of select="height"/> <br/>
    <b>Division</b> <xsl:value-of select="division"/> <br/>
    <b>Reach</b>        <xsl:value-of select="reach"/> <br/>
    <b>Stance</b>       <xsl:value-of select="stance"/> <br/>
    <b>Nationality</b>  <xsl:value-of select="nationality"/> <br/>
    <b>Training Camp</b>    <xsl:value-of select="camp"/> <br/>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="bout">
    <table width="100%" border="1">
        <tr>
            <td width ="10%"><xsl:value-of select="result"/></td>
            <td width ="10%"><xsl:value-of select="opponent"/></td>
            <td width ="10%"><xsl:value-of select="waywon"/></td>
            <td width ="10%"><xsl:value-of select="round"/></td>
            <td width ="10%"><xsl:value-of select="event"/></td>
            <td width ="10%"><xsl:value-of select="date"/></td>
            <td width ="10%"><xsl:value-of select="location"/></td>
            <td width ="10%"><xsl:value-of select="notes"/></td>
        </tr>
    </table>
 </xsl:template>

<xsl:template match="/">
       <h1>LIST OF UFC FIGHTERS</h1>
<xsl:apply-templates/>
</xsl:template>

</xsl:transform>

Я хочу получить некоторую информацию о сбитом бойце и затем показать запись боя, как показано ниже.однако он продолжает добавлять дополнительную строку, как показано ниже.

Имя Джордж Сен-ПьерАКА ГСПВозраст 30Высота 5 футов 10 дюймовДивизион Полусредний весДостичь 76 вПозиция православнаяНациональность канадецТренировочный лагерь Tristar Gym

Джордж Сен-Пьер GSP 30 5ft 10 в полусреднем весе 76 в православном канадском тренажерном зале Tristar Gym

Почему эта информация печатается дважды?Я уверен, что это, вероятно, просто, но это действительно расстраивает меня.

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

попробуйте

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="Fighter">
    <br/>
    <br/>
    <br/>
    <b>Name </b>    <xsl:value-of select="name"/> <br/>
    <b>AKA</b>      <xsl:value-of select="nickname"/> <br/>
    <b>Age</b>      <xsl:value-of select="age"/> <br/>
    <b>Height</b>       <xsl:value-of select="height"/> <br/>
    <b>Division</b> <xsl:value-of select="division"/> <br/>
    <b>Reach</b>        <xsl:value-of select="reach"/> <br/>
    <b>Stance</b>       <xsl:value-of select="stance"/> <br/>
    <b>Nationality</b>  <xsl:value-of select="nationality"/> <br/>
    <b>Training Camp</b>    <xsl:value-of select="camp"/> <br/>
</xsl:template>

<xsl:template match="bout">
    <table width="100%" border="1">
        <tr>
            <td width ="10%"><xsl:value-of select="result"/></td>
            <td width ="10%"><xsl:value-of select="opponent"/></td>
            <td width ="10%"><xsl:value-of select="waywon"/></td>
            <td width ="10%"><xsl:value-of select="round"/></td>
            <td width ="10%"><xsl:value-of select="event"/></td>
            <td width ="10%"><xsl:value-of select="date"/></td>
            <td width ="10%"><xsl:value-of select="location"/></td>
            <td width ="10%"><xsl:value-of select="notes"/></td>
        </tr>
    </table>
 </xsl:template>

<xsl:template match="/">
       <h1>LIST OF UFC FIGHTERS</h1>
<xsl:apply-templates select="Fighter"/>
<xsl:apply-templates select="bout"/>
</xsl:template>

</xsl:transform>
1 голос
/ 04 сентября 2011

Поскольку у вас есть apply-templates в шаблоне Fighter и нет шаблона для имени, псевдонима, возраста и т. Д. - поэтому XSL просто копирует текст, удовлетворяющий этим узлам, - поместите это в конец XSL, чтобы избежать этого, и оставьте там apply-templates

<xsl:template match="*"></xsl:template>

Это поместит пустую строку для любого тега, не обработанного другим шаблоном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...