хорошо, у меня есть таблицы стилей XSLT, что делает большинство из того, что мне нужно сейчас, это выглядит так:XSLT, захватить только часть строки внутри тега
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="//Product/Description">
<title>
<xsl:apply-templates/>
</title>
</xsl:template>
<xsl:template match="//Product/Picture">
<link>
<xsl:apply-templates/>
</link>
</xsl:template>
<xsl:template match="//Product/Caption">
<description>
<xsl:apply-templates/>
</description>
</xsl:template>
<xsl:template match="Picture">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, '<')">
<xsl:value-of select="substring-before($text, '<')"/>
<xsl:call-template name="strip-tags">
<xsl:with-param name="text" select="substring-after($text, 'src=')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Caption">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, '<')">
<xsl:value-of select="substring-before($text, '<')"/>
<xsl:call-template name="strip-tags">
<xsl:with-param name="text" select="substring-after($text,'>')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
это, вероятно, огромный ляп, потому что Я просто хватаю текст из «сырого» вывода моего редактора xml, потому что он делает то, что мне нужно. он помещает правильные метки в нужные места. однако теперь «strip-tag», похоже, не работает, и я попытался сделать еще одну версию «strip-tag», которая разделила бы все, что указано далее: «src =» и «предыдущий»>, но, очевидно, «strip-tag» быть противоположным тому, что я пытаюсь сделать. есть ли что-то противоположное «strip-tag»? то я мог бы просто заменить слово «стрип-тегов» с «стрип-все кроме» или то, что можно было бы назвать
EDIT:
здесь является входной файл XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE StoreExport SYSTEM "http://store.yahoo.com/doc/dtd/StoreExport.dtd">
<StoreExport>
<Settings>
<Published timestamp="1297187196"/>
<Locale code="C" name="English" encoding="iso-8859-1"/>
<StoreName>Cl33333</StoreName>
<Currency>USD</Currency>
<ShipMethods>
<ShipMethod></ShipMethod>
</ShipMethods>
<PayMethods>
</PayMethods>
</Settings>
<Products>
<Product Id="agfasu">
<Code>3616a</Code>
<Description>Ageless Fashion Suit</Description>
<Url>http://www.cl333333333d.com/agfasu.html</Url>
<Thumb><img border=0 width=50 height=70 src=http://ep.y3333333333327706119506618_2144_317652924></Thumb>
<Picture><img border=0 width=600 height=845 src=http://ep.yim3333333st-27706119506618_2144_317019111></Picture>
<Orderable>YES</Orderable>
<Taxable>YES</Taxable>
<Pricing>
<BasePrice>178.00</BasePrice>
</Pricing>
<Path>333333333333333om/wochsu.html">Womens Church Suits</ProductRef>
<ProductRef Id="2454" Url="http://www.cl33333333454.html">Aussie Austine Spring/Summer 2011</ProductRef>
</Path>
<Availability>Usually ships the next business day.</Availability>
<Caption><head> <meta content="en-us" http-equiv="Content-Language"> <style type="text/css"> .style3 { font-family: arial, helvetica; font-size: medium; font-weight: bold; } .style4 { font-size: small; } </style> </head> <p><strong>Wholesale Women&#39;s</Caption>
<OptionLists>
<OptionList name="Size">
<OptionValue>8</OptionValue>
</OptionList>
<OptionList name="Colors">
<OptionValue>Red</OptionValue>
</OptionList>
<OptionList name="Accessories">
<OptionValue>Suit</OptionValue>
</OptionList>
</OptionLists>
</Product>
выход я хотел бы:
<item>
<title>
<![CDATA['DescriptionTag]]>
</title>
<description>
<![CDATA[CaptionTagStrippedofEscapedCharacters]]>
</description>
<link>'UrlTag'</link>
<g:condition>new</g:condition>
<g:price>'BasePriceTag'</g:price>
<g:product_type>Clothing, Accessories</g:product_type>
<g:image_link>'PictureTagFrom 'src=' to '>' </g:image_link>
<g:payment_accepted>Visa</g:payment_accepted>
<g:payment_accepted>Mastercard</g:payment_accepted>
<g:payment_accepted>Discover</g:payment_accepted>
</item>
некоторые теги не нужно быть заселена из источника, но всегда такой же, как «платеж принят», «условие», и «тип продукта»
Было бы здорово, если бы вы добавили исходный XML и то, что вы хотите выполнить, то есть желаемый результат. –
@Paulo: когда я сделал это, у людей сложилось впечатление, что вопрос слишком общий, и мне нужно более фундаментальное понимание проблемы. поэтому я решаю общую проблему с этим kludge. xml-файл:<Описание /> с несколькими другими неиспользованными тегами в элементе продукта. поэтому то, что приведенный выше лист делает для меня, переименовывает «теги» для каждого элемента, затем я копирую/вставляю и добавляю соответствующие заголовки файлов. элемент 'picture' имеет текст внутри тега, который мне не нужен, поэтому я просто хочу иметь тег вокруг того, что после src = before '>' –
fightermagethief
@bboyreason: проработайте очень простой пример ввода XML и желаемого вывода и добавьте тех, кто на ваш пост. Без этого никто не собирается пробираться через ваш XSLT и попытаться угадать, что вы хотите сделать. –