У меня есть большое количество html-файлов, таких как следующий файл 01.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My Title</title>
</head>
<body>
<item itemprop="itemprop1" content="content1" />
<item itemprop="itemprop2" content="content2" />
<item itemprop="itemprop3" content="content3" />
<item itemprop="itemprop4" content="content4" />
<item itemprop="itemprop5" content="content5" />
<item itemprop="itemprop6" content="content6" />
<item itemprop="itemprop7" content="content7" />
<item itemprop="itemprop8" content="content8" />
<item itemprop="itemprop9" content="content9" />
</body>
</html>
В каждом html-файле есть только один узел элемента с itemprop = "itemprop1".То же самое для itemprop2, itemprop3 и т. Д.
Я хотел бы получить следующий вывод txt-файла:
content1 | content 5
, который является объединением: 1. значения содержимого атрибута дляэлемент с itemprop = "itemprop1" 2. труба "|"3. значение атрибута содержимого для элемента с itemprop = "itemprop5"
Я запускаю следующий скрипт bash:
xsltproc 01.xslt 01.html >> 02.txt
, где 01.xslt является следующим:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="body">
<xsl:value-of select="//item[@itemprop='itemprop1']/@content"/>|<xsl:value-of select="item[@itemprop='itemprop5']/@content"/>
</xsl:template>
</xsl:stylesheet>
К сожалению, это не работает.Что такое правильный файл xslt?
ОБНОВЛЕНИЕ
Это последний рабочий пример.
01.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My Title</title>
</head>
<body>
<item itemprop="itemprop1" content="content1" />
<item itemprop="itemprop2" content="content2" />
<item itemprop="itemprop3" content="content3" />
<item itemprop="itemprop4" content="content4" />
<item itemprop="itemprop5" content="content5" />
<item itemprop="itemprop6" content="content6" />
<item itemprop="itemprop7" content="content7" />
<item itemprop="itemprop8" content="content8" />
<item itemprop="itemprop9" content="content9" />
</body>
</html>
01.xslt имеет следующий вид:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="html">
<xsl:value-of select="//item[@itemprop='itemprop1']/@content"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="//item[@itemprop='itemprop5']/@content"/>
</xsl:template>
</xsl:stylesheet>
, а вывод 02.txt следующий:
content1|content5