Как подать заявку, XPath функционируют 'подстрока - после'

В корневом пути создайте файл .htaccess с

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/public/ 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f



RewriteRule ^(.*)$ /public/$1 
#RewriteRule ^ index.php [L]
RewriteRule ^(/)?$ public/index.php [L] 
</IfModule>

. В общедоступном каталоге создайте файл .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

, если вы внесли какие-либо изменения в public / Файл index.php исправляет их правильным путем, тогда ваш сайт будет жить.

, что с этим решится?

  • Хостинг для проекта laravel.
  • Css не работает на laravel.
  • Сайт Laravel не работает.
  • Загрузка сайта laravel с помощью domain / public / index.php
  • Проект laravel не перенаправлен правильно
17
задан Dimitre Novatchev 15 January 2011 в 18:03
поделиться

3 ответа

В XPath 2.0 это может быть произведено единственным выражением XPath:

            /*/*/substring-after(., 'HarryPotter:')

Здесь мы используем очень мощную функцию XPath 2.0, который в конце пути местоположения ступает, мы можем поместить функцию, и эта функция будет применена на все узлы в текущем наборе результатов.

В XPath 1.0 нет такой функции , и это не может быть выполнено в одном выражении XPath.

Мы могли выполнить преобразование XSLT как следующее:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

    <xsl:template match="/">
      <xsl:for-each select="/*/*[substring-after(., 'HarryPotter:')]">
        <xsl:value-of select=
         "substring-after(., 'HarryPotter:')"/>
        <xsl:text>&#xA;</xsl:text>
      </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>  

, Когда применено на исходный XML-документ:

<bookstore>
    <book>  HarryPotter:Chamber of Secrets </book>
    <book>  HarryPotter:Prisoners in Azkabahn </book>
</bookstore>

это преобразование приводит к требуемому результату:

Тайная комната
Заключенные в Azkabahn

23
ответ дан 30 November 2019 в 12:21
поделиться

В Вашем XML у Вас нет пространства между Harry Potter, но в Вашем XQuery у Вас есть пространство. Просто заставьте его соответствовать и престо, Вы вернете данные...

    Dim xml = <bookstore>
                  <book>HarryPotter:Chamber of Secrets</book>
                  <book>HarryPotter:Prisoners in Azkabahn</book>
                  <book>MyDummyBook:Dummy Title</book>
              </bookstore>

    Dim xdoc As New Xml.XmlDocument
    xdoc.LoadXml(xml.ToString)

    Dim Nodes = xdoc.SelectNodes("/bookstore/book/text()[substring-after(., 'HarryPotter:')]")

    Dim Iter = Nodes.GetEnumerator()
    While Iter.MoveNext
        With DirectCast(Iter.Current, Xml.XmlNode).Value
            Console.WriteLine(.Substring(.IndexOf(":") + 1))
        End With
    End While
5
ответ дан 30 November 2019 в 12:21
поделиться

Выражение XPath

/bookstore/book/text()[substring-after(. , 'HarryPotter:')]

возвратит набор узлов со всеми текстовыми узлами, содержащими значение "HarryPotter":. получить книжный заголовок, следующий за "HarryPotter": необходимо пройти этот набор узлов и выбрать ту подстроку для каждого узла. Это может быть сделано с подстрокой - после при использовании XSLT или с Подстрокой и IndexOf при использовании VB как показано balabaster.

4
ответ дан 30 November 2019 в 12:21
поделиться
Другие вопросы по тегам:

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