XSLT: <xsl:strip-пространство> не работает

Вы могли бы хотеть добавить следующее к своему .bash_profile (или эквивалентный), который запускает ssh-агент на входе в систему.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

На некоторых дистрибутивах Linux (Ubuntu, Debian) можно использовать:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

Это скопирует сгенерированный идентификатор в удаленную машину и добавит его к удаленной цепочке для ключей.

можно считать больше здесь и здесь .

5
задан Vini 15 July 2009 в 21:55
поделиться

3 ответа

Используя xslt из исходного вопроса, должно помочь.

15
ответ дан 18 December 2019 в 05:31
поделиться

Непонятно, что вы собираетесь получить в результате и чего вы ожидаете от xsl: strip-whitespace в первую очередь. Но следует отметить, что он удаляет не все пробелов, а только то, что считается несущественным по «обычным» правилам. В частности, из спецификации XSLT 1.0:

Текстовый узел никогда не удаляется, если он не содержит только пробельные символы.

Так, например, этот:

<foo>
  <bar>   </bar>
</foo>

будет сокращен до:

<foo><bar/></foo>

, потому что в нем было 3 текстовых узла, содержащих только пробелы (после и до , между и , и после и до ).

Обратите также внимание на то, что поскольку у вас

17
ответ дан 18 December 2019 в 05:31
поделиться

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

Предполагая, что под «обрезкой» вы подразумеваете «удалить все пробелы» сразу после открытия и перед закрытием тегов ", следующие дополнительные правила шаблона должны помочь:

<xsl:variable name="whitespace">&#x20;&#x9;&#xD;&#xA;</xsl:variable>

<!-- Trim all whitespace at beginning of string -->
<xsl:template name="trim-start">
   <xsl:param name="text"/>
   <xsl:variable name="first-char" select="substring($text, 1, 1)" />
   <xsl:choose>
     <xsl:when test="contains($whitespace, $first-char)">
       <xsl:call-template name="trim-start">
         <xsl:with-param name="text" select="substring($text, 2)" />
       </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
       <xsl:value-of select="$text" />
     </xsl:otherwise>
   </xsl:choose>
</xsl:template>

<!-- Trim all whitespace at end of string -->
<xsl:template name="trim-end">
   <xsl:param name="text"/>
   <xsl:variable name="last-char" select="substring($text, string-length($text), 1)" />
   <xsl:choose>
     <xsl:when test="contains($whitespace, $last-char)">
       <xsl:call-template name="trim-end">
         <xsl:with-param name="text" select="substring($text, 1, string-length($text) - 1)" />           </xsl:call-template>
       </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
       <xsl:value-of select="$text" />
     </xsl:otherwise>
   </xsl:choose>
</xsl:template>

<xsl:template match="text()">
  <xsl:call-template name="trim-start">
    <xsl:with-param name="text">
      <xsl:call-template name="trim-end">
        <xsl:with-param name="text" select=".">
      </xsl:call-template>
    <xsl:param>
  </xsl:call-template>
</xsl:template>
2
ответ дан 18 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

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