1 Câu hỏi: HTML và các ký tự đặc biệt là gì?

câu hỏi được tạo ra tại Wed, Aug 31, 2011 12:00 AM

Các thực thể ký tự dành riêng đặc biệt trong HTML và trong XML là gì?

Thông tin mà tôi có nói:

HTML:

  •  49 310 (thay thế bằng 49 310)
  •  49 310 (thay thế bằng 49 310)
  • 49 310 (thay thế bằng 49 310)
  •  49 310 (thay thế bằng 49 310)
  • 49 310 (thay thế bằng 49 310)

XML:

  •  49 310 (thay thế bằng 49 310)
  •  49 310 (thay thế bằng 49 310)
  •  49 310 (thay thế bằng 49 310)
  •  49 310 (thay thế bằng 49 310)
  •  49 310 (thay thế bằng 49 310)

Nhưng tôi không thể tìm thấy tài liệu về một trong hai thứ này.

W3C có đề cập đến, trong Ngôn ngữ đánh dấu mở rộng (XML) 1.0 ( Phiên bản thứ năm) , một số tham chiếu thực thể được xác định trước. Nhưng nó nói rằng các thực thể này được xác định trước (theo cùng cách mà 49 310 được xác định trước); không phải là họ phải được trốn thoát:

  

4.6 Thực thể được xác định trước

     

[Định nghĩa: Cả hai tham chiếu thực thể và ký tự có thể được sử dụng để    thoát khung góc trái, ký hiệu và các dấu phân cách khác. Một bộ   của các thực thể chung (amp, lt, gt, apos, quote) được chỉ định cho điều này   mục đích. Tham chiếu ký tự số cũng có thể được sử dụng; họ đang   mở rộng ngay lập tức khi được công nhận và phải được coi là nhân vật   dữ liệu, do đó, các tham chiếu ký tự số "& # 60;" và "& # 38;" có thể   được sử dụng để thoát < và & khi chúng xảy ra trong dữ liệu ký tự.]

Những ký tự nào phải được thoát vào các tham chiếu thực thể trong HTML ?
Những ký tự phải nào được thoát vào các tham chiếu thực thể trong XML ?

Cập nhật :

Từ Ngôn ngữ đánh dấu mở rộng (XML) 1.0 (Phiên bản thứ năm) :

  

2.4 Dữ liệu ký tự và đánh dấu

     

Ký tự dấu và (49 310) và khung góc trái (49 310) 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 số   tham chiếu ký tự hoặc các chuỗi "49 310" và "49 310"   tương ứng.

     

Khung góc phải (49 310) có thể được biểu diễn bằng cách sử dụng   chuỗi "49 310" và phải , để tương thích, được thoát bằng cách sử dụng một trong hai   "49 310" hoặc tham chiếu ký tự khi xuất hiện trong chuỗi "49 310"   trong nội dung, khi chuỗi đó không đánh dấu sự kết thúc của CDATA   phần.

     

Để 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 (49 310) có thể được biểu thị là "49 310" và ký tự trích dẫn kép (49 310) là "49 310".

tôi đọc trước đây nói rằng

phải là :

  •  49 310 (49 310) phải là
  •  49 310 (49 310) phải là

có thể , nhưng phải khi xuất hiện dưới dạng 49 310

  •  49 310 (49 310) phải, nếu xuất hiện dưới dạng 49 310

Và rằng 49 310 và 49 310 không cần phải thoát ra; trừ khi bạn muốn có dấu ngoặc kép bên trong các thuộc tính được trích dẫn.

Từ Đặc điểm kỹ thuật HTML 4.01, Đại diện tài liệu HTML :

  

5.3.2 Tham chiếu thực thể ký tự

     

Tác giả muốn đặt ký tự "49 310" trong văn bản nên sử dụng "49 310"   (ASCII thập phân 60) để tránh sự nhầm lẫn có thể xảy ra khi bắt đầu   thẻ (bắt đầu mở dấu phân cách thẻ).

     

Tương tự, các tác giả nên sử dụng "49 310"   (ASCII thập phân 62) trong văn bản thay vì "49 310" để tránh các vấn đề với cũ hơn   tác nhân người dùng nhận thức không chính xác đây là phần cuối của thẻ (thẻ   đóng dấu phân cách) khi nó xuất hiện trong các giá trị thuộc tính được trích dẫn.

     

Tác giả nên sử dụng "49 310" (ASCII thập phân 38) thay vì "49 310" để tránh   nhầm lẫn với sự bắt đầu của một tham chiếu ký tự (thực thể   tham chiếu mở dấu phân cách). Tác giả cũng nên sử dụng "49 310" trong   giá trị thuộc tính vì tham chiếu ký tự được cho phép trong CDATA   giá trị thuộc tính.

     

Một số tác giả sử dụng chartham chiếu thực thể acter "49 310" để mã hóa   trường hợp của dấu ngoặc kép (49 310) vì ký tự đó có thể là   được sử dụng để phân định các giá trị thuộc tính.

HTML mơ hồ hơn nhiều về các quy tắc, nhưng có vẻ như tôi nên :

  •  49 310 nên với 49 310
  •  49 310 nên với 49 310
  •  49 310 nên với 49 310
  •  49 310 nên với 49 310

và nếu 49 310 có thể là một tham chiếu thực thể, tôi cũng nên thay thế 49 310 bằng 49 310.

Cập nhật hai

Từ HTML5 - Một từ vựng và API liên quan cho HTML và XHTML :

  

8.3 Nối tiếp các đoạn HTML

     

Thoát một chuỗi (cho các mục đích của thuật toán ở trên) bao gồm   chạy các bước sau:

     

Thay thế bất kỳ sự xuất hiện nào của ký tự "49 310" bằng chuỗi "49 310".

     

Thay thế bất kỳ sự xuất hiện nào của ký tự KHÔNG GIAN U + 00A0 NO-BREAK bằng ký tự   chuỗi "49 310".

     

Nếu thuật toán được gọi trong chế độ thuộc tính, hãy thay thế bất kỳ   lần xuất hiện của ký tự "49 310" theo chuỗi "49 310".

     

Nếu thuật toán không được gọi trong chế độ thuộc tính, hãy thay thế bất kỳ   lần xuất hiện của ký tự "49 310" theo chuỗi "49 310" và bất kỳ   lần xuất hiện của ký tự "49 310" theo chuỗi "49 310".

Tôi đọc là HTML :

  •  49 310 bằng 49 310 luôn
  •  49 310 bằng 49 310 luôn
  •  49 310 x 49 310 nếu nó nằm trong một thuộc tính
  •  49 310 x 49 310 nếu nó không trong một thuộc tính (nghĩa là các thuộc tính có thể chứa 49 310)
  •  49 310 x 49 310 nếu nó không trong một thuộc tính (nghĩa là các thuộc tính có thể chứa 49 310)
26
  1. Bạn thực sự nên tách câu hỏi của bạn khỏi câu trả lời của bạn.
    2011-08-31 03: 20: 57Z
  2. Tôi không có câu trả lời. Tôi có nghiên cứu có thể đúng hoặc không chính xác. Một người biết câu trả lời có thể đăng nó và những người biết có thể bỏ phiếu nếu thực tế là đúng.
    2011-08-31 11: 31: 00Z
  3. Nếu câu trả lời ở trên không phải là câu trả lời, thì bạn cần phải rõ ràng hơn nhiều về những gì bạn đang tìm kiếm!
    2011-08-31 13: 47: 04Z
  4. tôi đã tìm thấy năm nguồn khác nhau nói ba điều khác nhau. Ai đó biết cần phải quyết định nguồn nào là đúng và nguồn nào sai.
    2011-08-31 17: 43: 14Z
  5. Thật kỳ lạ khi HTML 4 và 5 nói những điều trái ngược nhau về việc khi nào bạn nên thoát 49 310 (trong một thuộc tính hay không).
    2012 /02-15 16: 06: 45Z
1 Câu trả lời                              1                         

Trước tiên, bạn đang so sánh một đặc tả HTML 4.01 với một đặc điểm kỹ thuật HTML 4.01 với một HTML 5 một . HTML5 liên kết chặt chẽ hơn với XML so với HTML 4.01 từng có (đó là lý do tại sao chúng tôi có XHTML), vì vậy câu trả lời này sẽ bám vào HTML 5 và XML.

Các tài liệu tham khảo được trích dẫn của bạn đều nhất quán ở các điểm sau:

  •  49 310 phải luôn được biểu thị bằng 49 310 khi không biểu thị hướng dẫn xử lý
  •  49 310 phải luôn được biểu thị bằng 49 310 khi không biểu thị hướng dẫn xử lý
  •  49 310 phải luôn luôn được đại diện với 49 310
  • ngoại trừ khi trong phạm vi 49 310 (chỉ áp dụng cho XML)

Tôi đồng ý 100% với điều này. Bạn không bao giờ muốn trình phân tích cú pháp nhầm lẫn chữ cho hướng dẫnns, vì vậy, đó là một ý tưởng vững chắc để luôn mã hóa bất kỳ ký tự không phải không gian (xem bên dưới). Các trình phân tích cú pháp tốt biết rằng mọi thứ có trong 49 310 không phải là hướng dẫn, do đó không cần mã hóa ở đó.

Trong thực tế, tôi không bao giờ mã hóa 49 310 hoặc 49 310 trừ khi

  • nó xuất hiện trong giá trị của một thuộc tính (XML hoặc HTML)
  • nó xuất hiện trong văn bản của các thẻ XML. (49 310)

Cả hai thông số kỹ thuật cũng đồng ý với điều này.

Vì vậy, điểm tranh chấp duy nhất là 49 310 (không gian). Sự đề cập duy nhất của nó trong một trong hai đặc điểm kỹ thuật là khi cố gắng tuần tự hóa. Khi không, bạn nên luôn luôn sử dụng một chữ 49 310 (khoảng trắng). Trừ khi bạn đang viết trình phân tích cú pháp của riêng mình, tôi không thấy cần phải thực hiện bất kỳ loại tuần tự hóa nào, vì vậy đây là vấn đề bên cạnh.

    
13
2011-09 /02 03: 48: 38Z
  1. Không có lý do gì để thoát 49 310 ngoại trừ trong trường hợp rất đặc biệt và cực kỳ hiếm gặp của 49 310 trong dữ liệu tuyến tính hóa XML. Nó có thể được thoát, nếu muốn, cho tính đối xứng (với thoát 49 310). Đây là những gì các tài liệu tham khảo thực sự nói. Và không có lý do gì để thoát 49 310 hoặc 49 310 ngoại trừ trong giá trị thuộc tính khi cùng một ký tự được sử dụng làm dấu phân cách giá trị thuộc tính.
    2013-10-14 08: 01: 55Z
  2. Nếu bạn chỉ mã hóa dấu ngoặc kép nếu chúng xuất hiện bên trong một giá trị thuộc tính hoặc bên trong nội dung văn bản thành phần, trong bối cảnh nào khác, văn bản đó sẽ xuất hiện mà bạn không xuất hiện thoát khỏi chúng?
    2014-03-24 19: 52: 05Z
&
nguồn đặt đây