XSLT: вывести значение и не получить значение дочернего узла

Добавление cabac=false в мой элемент x264enc устраняет проблему.

gst-launch-1.0 -v gdiscreencapsrc ! queue ! video/x-raw,framerate=60/1 ! decodebin ! videoscale ! videoconvert ! \
       x264enc cabac=false tune=zerolatency bitrate=4000  speed-preset="fast" ! \
             h264parse ! rtph264pay config-interval=-1 \
       ! udpsink host=224.1.1.1 port=5000 auto-multicast=true sync=false
0
задан zx485 19 January 2019 в 17:39
поделиться

1 ответ

Ваше выражение

<xsl:value-of select="Book/languaje"/>

выделяет все текстовое содержимое элемента languaje, который содержит

  1. узел text() и
  2. а [ 118] элемент с самим узлом text()
  3. и другим узлом text()

Возможно, вам нужны узлы text()[1] (1) и text()[2] (3). [тысяча сто тридцать одна]


Если вы можете использовать XSLT-2.0 или выше, вы можете просто сделать это, используя расширенную функциональность xsl:value (опционально с разделителем), которая может обрабатывать более одного значения сразу:

<xsl:value-of select="Book/languaje/text()" />
<час>

Если вы ограничены XSLT-1.0 и, следовательно, XPath-1.0, xsl:value может обрабатывать только одно значение за раз. Но у вас есть по крайней мере три возможности:

  1. Цикл по узлам text() элементов languaje:

    <xsl:for-each select="Book/languaje/text()">
        <xsl:value-of select="."/>
    </xsl:for-each>
    
  2. Применить стандартный шаблон на всех узлах languaje text():

    <xsl:apply-templates select="Book/languaje/text()" />
    
  3. Примените стандартный шаблон к элементу languaje в сочетании с пустым шаблоном для [ 1120] элемент:

      <xsl:apply-templates select="Book/languaje" />
    
    <!-- And on the template level the following -->  
    <xsl:template match="languaje/previous" />
    

Результат всех трех подходов должен быть одинаковым:

'ESP'+'' = 'ESP'
0
ответ дан zx485 19 January 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: