Trong XSLT không có giá trị Null. Để biểu thị một giá trị bị thiếu, bạn có thể sử dụng một chuỗi có độ dài bằng không hoặc một chuỗi rỗng. Chúng không giống nhau - một chuỗi rỗng sẽ trả về 0 từ đếm ($ x) nhưng chuỗi có độ dài bằng không là chuỗi chứa một mục xs: string có độ dài chuỗi là 0 (count ($ x) = 1 và độ dài chuỗi ($ x) = 0).
Hầu hết các hàm XPath chuẩn đều chấp nhận chuỗi có độ dài bằng không hoặc chuỗi trống nhưng hàm tùy chỉnh của bạn có thể không.
Sự cố có thể xảy ra nếu bạn đang chọn seqeunce ký tự. Ví dụ, nếu bạn chọn giá trị của một nút chứa chuỗi mà nút không tồn tại, bạn sẽ nhận được một chuỗi rỗng - nhưng nếu nút tồn tại và giá trị rỗng, bạn sẽ nhận được chuỗi rỗng.
Sửa đổi cách bạn chọn giá trị để luôn có chuỗi trống (hoặc bọc/thay đổi hàm isValidDate để chấp nhận chuỗi trống). Hàm defintion sau sẽ chấp nhận chuỗi rỗng và chuyển đổi nó thành chuỗi có độ dài bằng không
<xsl:function name="cda:isValidDate" as="xs:boolean">
<xsl:param name="datestring" as="xs:string?"/>
<xsl:variable name="reallyastring" select="string($datestring)"/>
Your code
</xsl:function>
? trên xs: string? loại param cho phép một hoặc không có mục nào được cung cấp. Hàm string (...) không bao giờ trả về một chuỗi rỗng vì vậy sẽ chuyển đổi chuỗi rỗng thành chuỗi có độ dài bằng không.
Nguồn
2009-08-21 07:30:36
Hoặc sử dụng 'xs: chọn' để kiểm tra xem chuỗi có trống không (' count() = 0') trước khi gọi hàm trên đó. –
cách tôi có thể khai báo hàm của mình để chấp nhận chuỗi rỗng? có loại dữ liệu nào không? –
Đã cập nhật câu trả lời để cho biết cách chấp nhận chuỗi rỗng và chuyển đổi chuỗi đó thành chuỗi có độ dài bằng không. –