В корневом пути создайте файл .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 исправляет их правильным путем, тогда ваш сайт будет жить.
, что с этим решится?
В 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>
</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
В Вашем 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
Выражение XPath
/bookstore/book/text()[substring-after(. , 'HarryPotter:')]
возвратит набор узлов со всеми текстовыми узлами, содержащими значение "HarryPotter":. получить книжный заголовок, следующий за "HarryPotter": необходимо пройти этот набор узлов и выбрать ту подстроку для каждого узла. Это может быть сделано с подстрокой - после при использовании XSLT или с Подстрокой и IndexOf при использовании VB как показано balabaster.