Вот регулярное выражение, которое будет захватывать то, что находится между коровой и молоком (без начального / конечного пространства):
srctext = "My cow always gives milk.";
var re = /(.*cow\s+)(.*)(\s+milk.*)/;
var newtext = srctext.replace(re, "$2");
Спасибо, Тим С https://stackoverflow.com/users/7585/tim-c
Казалось, что я не полностью понял природу value-of
решение было довольно близко.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:onix="http://ns.editeur.org/onix/3.0/reference"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl onix xsi">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" />
<!-- cdata-section-elements="onix:BiographicalNote onix:Text" -->
<xsl:template match="@* | node() ">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//onix:TextContent/onix:Text ">
<xsl:choose>
<xsl:when test="//onix:TextContent/onix:Text/@textformat='05'">
<xsl:element name="Text" xmlns="http://ns.editeur.org/onix/3.0/reference" >
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:copy-of select="node()"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="current()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>