Những ký tự nào phải được thoát trong các tài liệu XML hoặc tôi có thể tìm thấy danh sách đó ở đâu?
Những ký tự nào phải được thoát trong các tài liệu XML hoặc tôi có thể tìm thấy danh sách đó ở đâu?
Câu trả lời:
Nếu bạn sử dụng một lớp học hoặc thư viện thích hợp, họ sẽ thực hiện việc thoát hiểm cho bạn. Nhiều vấn đề XML được gây ra bởi nối chuỗi.
Chỉ có năm:
" "
' '
< <
> >
& &
Thoát ký tự phụ thuộc vào nơi sử dụng ký tự đặc biệt.
Các ví dụ có thể được xác thực tại Dịch vụ xác thực đánh dấu W3C .
Cách an toàn là thoát khỏi tất cả năm ký tự trong văn bản. Tuy nhiên, ba nhân vật "
, '
và >
nhu cầu không được thoát trong văn bản:
<?xml version="1.0"?>
<valid>"'></valid>
Cách an toàn là thoát tất cả năm ký tự trong thuộc tính. Tuy nhiên, >
nhân vật không cần phải thoát trong các thuộc tính:
<?xml version="1.0"?>
<valid attribute=">"/>
Ký '
tự không cần được thoát trong các thuộc tính nếu dấu ngoặc kép là "
:
<?xml version="1.0"?>
<valid attribute="'"/>
Tương tự, "
không cần phải thoát trong các thuộc tính nếu dấu ngoặc kép là '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Tất cả năm ký tự đặc biệt không được thoát trong các bình luận:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Tất cả năm ký tự đặc biệt không được thoát trong các phần CDATA :
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Tất cả năm ký tự đặc biệt không được thoát trong hướng dẫn xử lý XML:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML có bộ mã thoát riêng bao gồm nhiều ký tự hơn.
"
sẽ được đổi thành&quot;
Có lẽ điều này sẽ giúp:
Danh sách các tham chiếu thực thể ký tự XML và HTML :
Trong các tài liệu SGML, HTML và XML, các cấu trúc logic được gọi là dữ liệu ký tự và giá trị thuộc tính bao gồm các chuỗi ký tự, trong đó mỗi ký tự có thể biểu hiện trực tiếp (đại diện cho chính nó) hoặc có thể được biểu thị bằng một loạt các ký tự được gọi là tham chiếu ký tự, trong đó có hai loại: tham chiếu ký tự số và tham chiếu thực thể ký tự. Bài viết này liệt kê các tham chiếu thực thể ký tự hợp lệ trong các tài liệu HTML và XML.
Bài viết đó liệt kê năm thực thể XML được xác định trước sau:
quot "
amp &
apos '
lt <
gt >
Theo thông số kỹ thuật của World Wide Web Consortium (w3C), có 5 ký tự không được xuất hiện ở dạng chữ của chúng trong tài liệu XML , ngoại trừ khi được sử dụng làm dấu phân cách đánh dấu hoặc trong một nhận xét, hướng dẫn xử lý hoặc phần CDATA . Trong tất cả các trường hợp khác, các ký tự này phải được thay thế bằng cách sử dụng thực thể tương ứng hoặc tham chiếu số theo bảng sau:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
Lưu ý rằng các thực thể đã nói ở trên cũng có thể được sử dụng trong HTML, ngoại trừ & apos; , đã được giới thiệu với XHTML 1.0 và không được khai báo trong HTML 4. Vì lý do này và để đảm bảo tính tương thích retro, đặc tả XHTML khuyên bạn nên sử dụng & # 39; thay thế.
>
phải được thoát nếu nó đi theo ]]
nội dung, trừ khi nó dự định là một phần của ]]>
dấu phân cách chỉ ra phần cuối của phần CDATA.
Thoát ký tự là khác nhau cho các thẻ và thuộc tính.
Đối với thẻ:
< <
> > (only for compatibility, read below)
& &
Đối với thuộc tính:
" "
' '
Từ dữ liệu nhân vật và đánh dấu :
Ký tự dấu và (và) và dấu ngoặc góc trái (<) không được xuất hiện ở dạng nghĩa đen của chúng, ngoại trừ khi được sử dụng làm dấu phân cách đánh dấu hoặc trong một nhận xét, hướng dẫn xử lý hoặc phần CDATA. Nếu chúng cần ở nơi khác, chúng phải được thoát bằng cách sử dụng tham chiếu ký tự số hoặc chuỗi "& amp;" và "& lt;" tương ứng. Dấu ngoặc vuông (>) có thể được biểu diễn bằng chuỗi "& gt;" và phải, để tương thích, phải được thoát bằng cách sử dụng "& gt;" hoặc tham chiếu ký tự khi xuất hiện trong chuỗi "]]>" trong nội dung, khi chuỗi đó không đánh dấu sự kết thúc của phần CDATA.
Để cho phép các giá trị thuộc tính chứa cả dấu ngoặc đơn và dấu ngoặc kép, ký tự dấu nháy đơn hoặc dấu ngoặc đơn (') có thể được biểu diễn dưới dạng "& apos;" và ký tự trích dẫn kép (") là" & quot; ".
Câu trả lời mới, đơn giản cho một câu hỏi cũ, thường được hỏi ...
Luôn luôn (90% quan trọng cần nhớ)
Giá trị thuộc tính (9% quan trọng cần nhớ)
attr="
'
Báo giá đơn '
là ok trong dấu ngoặc kép."
attr='
"
Báo giá đôi "
là ok trong dấu ngoặc đơn.'
"
như "
và '
như '
khác.Nhận xét , CDATA và Hướng dẫn xử lý (0,9% quan trọng cần nhớ)
Esoterica (0,1% quan trọng cần nhớ)
]]>
như ]]>
trừ khi ]]>
kết thúc một phần CDATA. ]]>
phải được thoát như ]]>
, ngay cả khi không nằm trong phần CDATA. Cách dễ nhất để đạt được điều đó có thể là luôn luôn trốn thoát >
như >
.
]]>
nhưng đã chọn chuyển nó thành bí truyền thay vì gợi ý rằng >
luôn luôn được thoát (mà bạn không cần phải như bạn biết). Mục tiêu của tôi ở đây là làm cho các quy tắc thoát XML dễ nhớ và chính xác 100% .
AttValue
được trích dẫn trong câu trả lời của tôi thông qua liên kết trên 2. Giá trị thuộc tính .
Được rút ngắn từ: XML, Thoát
Có năm thực thể được xác định trước:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"Tất cả các ký tự Unicode được phép có thể được biểu diễn bằng tham chiếu ký tự số." Ví dụ:
中
Hầu hết các ký tự điều khiển và các phạm vi Unicode khác được loại trừ một cách cụ thể, nghĩa là (tôi nghĩ) chúng không thể xảy ra hoặc thoát hoặc trực tiếp:
Chỉ <
và &
được yêu cầu thoát nếu chúng được xử lý dữ liệu ký tự và không đánh dấu:
<company>AT&T</company>