Опустить пустые возвращаемые значения в XQuery - PullRequest
1 голос
/ 08 марта 2011

У меня есть оператор возврата XQuery, например:

return
 <li>
 <h3>{ string($TELECAST/title/maintitle) }</h3>
 <h4>{ string($TELECAST/title/subtitle) }</h4>
 <h5>{ string($TELECAST/title/description) }</h5>
 </li>

Иногда нет подзаголовка или описания, но теги HTML будут выводиться.Как я могу легко проверить наличие пустых строк и опустить ненужные теги?

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

Например, вот так:

return
 <li> {
 for $i in $TELECAST/title/maintitle return <h3>{ string($i) }</h3>,
 for $i in $TELECAST/title/subtitle return <h4>{ string($i) }</h4>,
 for $i in $TELECAST/title/description return <h5>{ string($i) }</h5>
 } </li>
1 голос
/ 08 марта 2011

Без использования функции это выражение XQuery:

<ul>{
   for $TELECAST in /root/telecast
   return
      <li>{
         for $item in $TELECAST/title/*
         return
            typeswitch($item)
            case element(maintitle) return <h3>{string($item)}</h3>
            case element(subtitle) return <h4>{string($item)}</h4>
            case element(description) return <h5>{string($item)}</h5>
            default return ()
      }</li>
}</ul>

С этим входом:

<root>
    <telecast>
        <title>
            <maintitle>Title</maintitle>
            <subtitle>Subtitle</subtitle>
            <description>Description</description>
        </title>
    </telecast>
    <telecast>
        <title>
            <maintitle>Title2</maintitle>
            <description>Description2</description>
        </title>
    </telecast>
</root>

Выход:

<ul>
    <li>
        <h3>Title</h3>
        <h4>Subtitle</h4>
        <h5>Description</h5>
    </li>
    <li>
        <h3>Title2</h3>
        <h5>Description2</h5>
    </li>
</ul>
0 голосов
/ 08 марта 2011

Вы можете использовать функцию fn: string-length . Однако имейте в виду, что эта функция не обрезает пробелы автоматически.

...