XSLT için yeni biriyim ve temel dönüşümleri tamamladım. Daha sonra, verileri zaman damgası olacak şekilde, tarih manipulasyonlarını denemek istiyorum. Ancak, çalışmak için herhangi bir tarih işlevi göremiyorum ve bu beni çok sinirlendiriyor. Firefox 3.5, xsltproc 1.1.24, xalan 1.10 ve XMLSpy 2009 kullanarak test ediyorum ve hepsi kullanmaya çalıştığım fonksiyonların mevcut olmadığını söylüyorlar. Ben stil sürüm 2 yaparsanızXSLT işlevleri ve ad alanları
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="event[@type='ABCD']">
<!-- Date: <xsl:value-of select="day-from-dateTime(xs:dateTime(@date))"/> -->
<!-- Date: <xsl:value-of select="day-from-dateTime(@date)"/> -->
Date: <xsl:value-of select="fn:day-from-dateTime(@date)"/>
</xsl:template>
</xsl:stylesheet>
, XMLSpy benim tarih döküm alamamaktan şikayetçi:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="datetime.xsl"?>
<watcher>
<event id="1" date="2009-09-04T13:49:10-0500" type="ABCD">This is a test </event>
</watcher>
</code>
Benim xsl öylesine benziyor:
Benim xml öylesine benziyor XSLT 2.0 Debugging Error: Error in XPath 2.0 expression (Cast failed, invalid lexical value - xs:dateTime '2009-09-04T13:49:10-0500')
XSLT 1.0 Debugging Error: Error in XPath expression (Unknown function - Name and number of arguments do not match any function signature in the static context - 'day-from-dateTime')
Ben sürüm 1 olarak bırakırsanız, bu farklı bir hata hakkında şikayet
Herzaman XSL'yi fn: date-from-dateTime gibi bir ad alanı kullanmak üzere değiştirmeye çalışıyorum, tüm ayrıştırıcılarımın The function number 'http://www.w3.org/2005/02/xpath-functions:day-from-dateTime' is not available
olduğunu ve bunların varyantlarını söyleyerek çalışmayı reddediyor. Diğer testlerden, substring() işlevini herhangi bir isim-alanı önekine gerek olmadan mükemmel şekilde kullanabileceğimi biliyorum ve inanıyorum-dateTime ile aynı adrestedir.
Tüm öğreticiler kullanılmakta olduklarını gösterdiğinden, inanılmaz derecede kolay bir şeymiş gibi hissediyorum, ama bir şey beni utandırıyor gibi görünüyor. Birisi bana neyi özlediğimi gösterir mi?
işleri, XMLSpy çalışır. Ancak, Firefox ve CLI yardımcı programım hala işlevin mevcut olmadığından şikayet ediyor. xsltproc, XSLT 2'yi desteklemediğini duymasa da, herhangi bir işlevi tanımıyor. Xalan, xs: dateTime() 'dan değil, yalnızca date-from-dateTime hakkında şikayet ediyor. Neden xs için ad alanına ihtiyacım var, fakat fn için değil? – hufman
Tamam - bilgimden en iyi şekilde yararlanın: Xalan yalnızca XPath 1.0'ı destekler; bu, date-dateTime adlı bir işlevden haberi olmadığı anlamına gelir. XPath 2'yi destekleyen işlemciler.0 date-from-dateTime yerleşik, böylece bir ad alanı öneki ve URI'yi açıkça bildirebilir veya yalnızca yerleşik olarak işlev adını kullanabilirsiniz. Veri türleri için ad alanı önekine gereksiniminiz vardır, çünkü bu yerleşik olarak yerleşik değildir. XPath 2.0 fonksiyonları ile aynı şekilde. – Brabster
Yalnızca XPath 2.0 destekleyici kütüphaneleri kullanmıyorsanız, XPath 2.0 yerleşimlerini kullanarak sorunlarınız olacaktır. Yalnızca XPath 2.0 libs kullanamazsanız, ihtiyaç duyduğunuz tarih ve zaman işleme işlevini yeniden uygulayan özel bir işlev kitaplığı oluşturabilirsiniz. FunctX'in burada yardımcı olabileceğini düşünüyorum. http://www.xqueryfunctions.com/xq/fn_day-from-datetime.html – Brabster