2009-08-12 116 views
28

Tôi muốn chuyển đổi một giá trị chuỗi trong xslt thành một giá trị số nguyên. Tôi đang sử dụng xslt 1.0, vì vậy tôi không thể sử dụng các chức năng được hỗ trợ trong xslt 2.0. Xin vui lòng giúp đỡ.Chuyển đổi chuỗi thành số nguyên trong XSLT 1.0

+2

Ông có thể cung cấp một tài liệu XML đầu vào mẫu, một XSLT mẫu và có thể mô tả các kết quả mong muốn? –

+0

bạn có thể lấy bất kỳ tệp mẫu nào và chuyển đổi chuỗi thành số nguyên. Tôi đoán không cần thiết cho các mẫu – Kapil

+0

Nhưng làm cách nào bạn muốn kết quả của mình trông như thế nào? Và bạn muốn làm gì với con số đó? Rất khó để giúp đỡ mà không biết những gì bạn đang cố gắng đạt được. –

Trả lời

52

Thêm vào câu trả lời của jelovirt, bạn có thể sử dụng số() để chuyển đổi giá trị thành một số, sau đó làm tròn(), sàn() hoặc trần() để nhận được một số nguyên.

Ví dụ

<xsl:variable name="MyValAsText" select="'5.14'"/> 
<xsl:value-of select="number($MyValAsText) * 2"/> <!-- This outputs 10.28 --> 
<xsl:value-of select="floor($MyValAsText)"/> <!-- outputs 5 --> 
<xsl:value-of select="ceiling($MyValAsText)"/> <!-- outputs 6 --> 
<xsl:value-of select="round($MyValAsText)"/> <!-- outputs 5 --> 
+1

Trong XPath 1.0, nếu một hàm (như 'floor()', 'ceiling()' hoặc 'round()') mong đợi một đối số kiểu dữ liệu số, thì nó sẽ ngầm đưa đối số của nó bằng hàm 'number()' . –

+0

Vì vậy, "số của tôi ($ MyValAsText)" là không cần thiết? Vâng, chúng ta hãy tiết kiệm những bit sau đó! Cám ơn Alejandro. Tôi đã nhận được bit bằng cách không đúc đủ thời gian trong XSLT mà tôi thường cast quá thường xuyên (trường hợp tại điểm). – jeffreypriebe

31

XSLT 1.0 không có loại dữ liệu số nguyên, chỉ tăng gấp đôi. Bạn có thể sử dụng number() để chuyển đổi một chuỗi thành một số.

Các vấn đề liên quan