Is it Bill or Ben that is speaking of flowerpot men?

A friend asked a question about how to encode a dramatic speech that possibly should be considered two speeches. Owing to a printing mistake, the second speaker’s name was omitted, so some consider it a single speech by the first speaker. However, a later hand has added the second speaker’s name in the margin after the fact, so some may wish to understand it as two speeches. The question was how do you encode these two possibilities simultaneously. Of course an entire stand-off solution is possible where you just mark the words and simultaneously mark word 1 to 20 as belonging to one speaker and the other speaker. But ignoring that more complicated solution here is some of the thinking I went through.

Let’s say we have some play, where Bill has two paragraphs. In the first he says “Bill and Ben, Bill and Ben,” and in the second he says “Bill and Ben, Bill and Ben, flowerpot men”. In TEI we might encode this as:

<!-- bill is speaker -->
<sp who="#bill">
   <!-- #bill points to more information about this speaker somewhere else in the document -->
  <speaker>Bill</speaker>
   <p>Bill and Ben, Bill and Ben,</p>
   <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

Now let’s say that the speaker marker ‘Bill’ was there and it had been crossed out by a later hand and replaced by ‘Ben’. We could indicate who we thought the real speaker was with the @who attribute whilst still retaining the orthographic distinction that a substitution had been made inside the <speaker> element.

<!-- Ben is speaker but a substitution noted-->
<sp who="#ben">
 <speaker>
    <subst>
      <del>Bill</del>
      <add>Ben</add>
    </subst>
  </speaker>
  <p>Bill and Ben, Bill and Ben,</p>
  <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

But this means we have to make the editorial decision, for all outputs, that one of them (here ‘Ben’) is the speaker. Another similar type of occurrence might be when Bill and Bill both say the paragraphs at the same time. In this case, we just note both of them as speakers:

<!-- bill and ben are both simultaneously speakers-->
<sp who="#bill #ben">
  <speaker>Bill</speaker>
  <p>Bill and Ben, Bill and Ben,</p>
  <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

Similar to this, is the case where the entire speech is spoken by either Bill or Ben, but the text just says Bill. In this case one solution (of a number of them) is not to post to a <person> element but instead point to a <listPerson> identified as ‘billOrBen’. Then in processing we can choose to assign this to one or the other, even though the text still says ‘Bill’. We’ve documented that we can only have one of them by using the @exclude attribute to point to the other <person> element.

<!-- billOrBen listPerson is speaker, but contents are mutually exclusive, so sort out in processing -->
<sp who="#billOrBen">
  <speaker>Bill</speaker>
  <p>Bill and Ben, Bill and Ben,</p>
  <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

<listPerson xml:id="billOrBen">
  <person xml:id="bill" exclude="#ben"><persName>Bill</persName></person>
  <person xml:id="ben" exclude="#bill"><persName>Ben</persName></person>
</listPerson>

But in the case that I was asked about the speaker’s name is added partway through a speech. Now, one way to deal with this is just to say the ‘Bill’ is the speaker, and the name ‘Ben’ is just an addition in the text. There is nothing wrong with this, you’re just documenting the original printing and the addition of the new name, but not changing the structure of the text.

<!-- bill is speaker but addition of  name partway through noted -->
<sp who="#bill">
  <speaker>Bill</speaker>
  <p>Bill and Ben, Bill and Ben,</p>
  <p><add place="left"><name>Ben</name></add>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

The other option, of course, would be to understand the intellectual content of the addition as splitting the two speeches, and encode not the original printed work, but the final version with the editorial additional provided by a later hand. (So this would just be ).

<!-- bill is speaker but addition of  name partway through noted -->
<sp who="#bill">
  <speaker>Bill</speaker>
  <p>Bill and Ben, Bill and Ben,</p>
</sp>

<sp who="#ben">
   <speaker rend="left">Ben</speaker>
   <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

But that isn’t really what was asked for… this says that there are two speeches, and while they want to have this as a possibility, they also want to record that it is possible that the ‘flowerpot men’ paragraph was actually said by ‘Bill’ and this ‘Ben’ in the margin is just an addition. One way to do this is to use the @exclude attribute again and to do so at slightly different levels of granularity.

<!-- bill speaks first bit, and possibly second bit, but possibly ben speaks second bit -->
<sp who="#bill">
  <speaker>Bill</speaker>
  <p>Bill and Ben, Bill and Ben,</p>
  <p exclude="#benPara" xml:id="billPara">
    <add place="left"><name>Ben</name></add>
     Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

<sp who="#ben" exclude="#billPara">
  <speaker rend="left">Ben</speaker>
  <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

In this case we’re saying that the second paragraph of Bill’s speech is mutually exclusive with the whole speech by Ben. In processing for any particular output we need to decide how to handle this, do we have the speech by Bill (which has the addition of a name to the left of the second paragraph) or do we have the speech by Bill consisting of only the first paragraph, and a speech by Ben.

Another way to do this is to use the <alt> element to record this elsewhere. In this case you just need to make sure there are proper @xml:id attributes on all the elements you want to point to, so here ‘billPara2’ is the second paragraph of Bill’s speech, and ‘benPara2’ is the whole of Ben’s speech. We then use the <alt> element to say that these two IDs are mutually exclusive, and specifically that we think it 70% likely that ‘billPara2’ is the correct one to choose and only 30% that ‘benPara2’ should be the correct choice.

<!-- bill speaks first bit, and possibly second bit, but (less) possibly ben speaks second bit  stand-off alternation-->
<sp who="#bill">
  <speaker>Bill</speaker>
  <p>Bill and Ben, Bill and Ben,</p>
  <p xml:id="billPara2"><add place="left">Ben</add>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

<sp who="#ben" xml:id="benPara2">
  <speaker rend="left">Ben</speaker>
  <p>Bill and Ben, Bill and Ben, flowerpot men</p>
</sp>

<alt mode="excl" targets="#billPara2 #benPara2" weights="0.7 0.3"/>

It is important to note that all of this is just a way to document whichever interpretation the encoder wishes to record. I’m not aware of any off-the-shelf processing which will do anything with @exclude or <alt> elements, however, I can picture that doing this in XSLT would not necessarily be too onerous depending on what circumstances it is used.

Oh, and obviously the original enquiry did not use a play based on the Bill and Ben theme song, but a much more famous Renaissance poet and playwright.

Posted in TEI, XML | Leave a comment

Leave a Reply