У меня есть это в XML файле:
<?xml-stylesheet href="../StyleSheets/VDD11.xsl" type="text/xsl"?>
Я хочу получить значение этого атрибута: href=""
. Я работаю с PHP 5. Я пробовал этот код, но не хочу работать:
function find_XSL_Fiche($file)
{
$xml = new DOMDocument();
$xml->load($file);
echo $file.'<br />';
$searchNode = $xml->getElementsByTagName( "xml-stylesheet" );
$xsl = "";
foreach ($searchNode as $searchNode)
{
$xsl = $searchNode->getAttribute('href');
}
echo $xsl;
return $xsl;
}
В конце я хочу получить ../StyleSheets/VDD11.xsl
Thanx
Это узел инструкции обработки. Вы можете использовать Xpath для его получения:
Получить все узлы команд обработки: //processing-instruction()
Отфильтровано по названию: //processing-instruction()[name() = "xml-stylesheet"]
Перенесите первый найденный PI в строку: string(//processing-instruction()[name() = "xml-stylesheet"])
$dom = new DOMDocument();
$dom->loadXml(
'<?xml version="1.0"?><?xml-stylesheet href="../StyleSheets/VDD11.xsl" type="text/xsl"?><xml/>'
);
$xpath = new DOMXpath($dom);
var_dump(
$xpath->evaluate(
'string(//processing-instruction()[name() = "xml-stylesheet"])'
)
);
Выход: https://eval.in/171053
string(47) "href="../StyleSheets/VDD11.xsl" type="text/xsl""
Содержание PI – это текст, он не имеет фиксированной структуры. Поэтому вам нужно вручную проанализировать данные из результата с помощью строковых функций или PCRE.